C++ 简单排序算法之选择排序

  小时候喜欢吃冰糖,妈妈每天会给6个糖给吃一周,我每天都犯愁该怎么吃比较好:先吃大的,今后每天都比今天吃的小;先吃小的,总觉得今天吃得有点少;对此这些一眼能看出来冰糖的大小,其实也是一种排序。

  例如:这周给的糖数值大小

{5, 2, 1, 7, 10, 3}

  第一天先选择最小的1,第二天选择2,一直到第六点吃最大的,这种就是一个选择排序的过程,代码如下:

// 简单快速排序
// param a:待排序数组
// param nTotalCount:数组长度
void sortSeletc(int a[], int nTotalCount)
{
	int nMinPos;	// 最小数据所在数组位置
	for (int i = 0; i < nTotalCount; i++)
	{
		nMinPos = i;
		for (int j = i + 1; j < nTotalCount; j++)
		{
			if (a[nMinPos] > a[j])
			{
				nMinPos = j;
			}
		}

		// 交换数值
		if (nMinPos != i)
		{
			int temp = a[nMinPos];
			a[nMinPos] = a[i];
			a[i] = temp;
		}
	}
}

  简单选择排序时间复杂度最差是O(n²),所以并不是最优排序算法。

  测试代码见我的上一篇文章:C++ 简单排序算法之冒泡排序

  今后还会加入其它排序算法的比较,所以这里预先加一个消耗时间的打印,冒泡排序先写到这里了,有什么不懂或者更好的排序方法欢迎留言讨论。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章