七種排序------簡單選擇排序(Simple Selection Sort)

簡單選擇排序法就是通過 n - i 次關鍵字間的比較,從 n - i + 1個記錄中選出關鍵字最小的記錄,並和第 i 個記錄交換。

代碼如下:

void SelectSort(SqList *L)
{
	int i,j,min,k;
	for(i = 0;i<(L->length-1);i++)
	{
		min = i;                            //將當前下標設置爲最小值下標
		for(j = i+1;j < (L->length);j++);
		{
			if((L->r[min]) > (L->r[j]))     //如果有小於當前最小值的關鍵字
			    min = j;                    //將次關鍵字的下標賦值給min
		}
		if(i != min)                        //若min != i ,說明找到最小值,進行交換
			swap(L,i,min);                  
	}
}

代碼應該說不難理解,針對待排序的關鍵字序列爲{9,1,5,8,3,7,4,6,2};對 i 從0循環到7,當i = 0時,L.r[i] = 9,min開始爲0,然後與   j = 2到9比較L.r[min]與L.r[j]的值,因爲j = 2時最小,所以min = 2,最終交換了L.r[0]和L.r[1]的值,這裏雖然比較了8次,但數據只交換了一次。

當 i = 1 時,L.r[i] = 9,min 開始是1,經過比較後,min = 9,交換L.r[1]和L.r[min]的值,這樣就找到了第二位置的關鍵字,之後數據的比較與交換與上面完全相同,最多完成8次交換即可完成排序工作。

簡單選擇排序的複雜度:

對於交換次數而言,當最好的時候,交換爲0次,最差的時候交換爲n - 1次。對於比較次數而言爲(n*(n - 1)/2),由於最終的排序時間是比較與jioa交換次數的總和,因此總的總的時間複雜度爲O(n*n).

發佈了26 篇原創文章 · 獲贊 21 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章