簡單選擇排序

2021-07-12 01:44:29 字數 776 閱讀 7283

演算法思想:

簡單選擇排序的基本原理如下:對於給定的一組記錄,經過第一輪比較後得到最小的記錄,然後將該記錄與第乙個記錄的位置進行交換;接著對不包括第乙個記錄以外的其他記錄進行第二輪比較,得到最小的記錄並與第二個記錄進行位置交換;重複該過程,直到進行比較的記錄只有乙個時為止。

實現過程為:

(1)將整個記錄序列劃分為有序區和無序區,初始時,有序區為空,無序區含有待排序的所有記錄。

(2)在無序區中選取關鍵碼最小的記錄,將它與無序區中的第乙個記錄交換,使得有序區擴充套件了乙個記錄,同時無序區減少了乙個記錄。

(3)不斷重複(2),直到無序區只剩下乙個記錄為止。此時所有的記錄已經按關鍵碼從小到大的順序排列。

具體實現如下,詳見**注釋:

#include 

void selectsort(int arr, int len)

}if (flag != i) // 一趟比較結束後,flag中保留的就是本趟排序的關鍵碼最小的記錄位置,temp中保留的就是本趟排序的關鍵碼最小的記錄。

}}int main(int argc, const

char * argv) ;

int len = sizeof(arr)/sizeof(int);

selectsort(arr, len);

for (int i = 0; i < len; i++)

printf("%d ", arr[i]);

printf("\n");

return

0;}

簡單選擇排序 簡單選擇排序詳解

n個記錄的檔案的直接選擇排序可經過n 1趟直接選擇排序得到有序結果 初始狀態 無序區為r 1.n 有序區為空。第1趟排序 在無序區r 1.n 中選出關鍵字最小的記錄r k 將它與無序區的第1個記錄r 1 交換,使r 1.1 和r 2.n 分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區...

選擇排序 簡單選擇排序

在要排序的一組數中,選出最小 或者最大 的乙個數與第1個位置的數交換 然後在剩下的數當中再找最小 或者最大 的與第2個位置的數交換,依次類推,直到第n 1個元素 倒數第二個數 和第n個元素 最後乙個數 比較為止。第一趟,從n個記錄中找出關鍵碼最小的記錄與第乙個記錄交換 第二趟,從第二個記錄開始的n ...

選擇排序 簡單選擇排序

1.選擇排序 簡單選擇排序,堆排序 與交換排序 氣泡排序,快速排序 的區別 每次比較如果發現較小的元素在後面,就交換兩個相鄰的元素。而選擇排序演算法的改進在於 先並不急於調換位置,先從a 1 開始逐個檢查,看哪個數最小就記下該數所在的位置p,等一躺掃瞄完畢,再把a p 和a 1 對調,這時a 1 到...