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++ 簡單排序算法之冒泡排序

  今後還會加入其它排序算法的比較,所以這裏預先加一個消耗時間的打印,冒泡排序先寫到這裏了,有什麼不懂或者更好的排序方法歡迎留言討論。

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