簡單選擇排序

2021-09-25 10:50:21 字數 968 閱讀 5259

演算法思想

直接選擇排序又稱簡單選擇排序,是一種不穩定的排序方法,其是選擇排序中最簡單一種,其基本思想是:第 i 趟排序再待排序序列 a[i]~a[n] 中選取關鍵碼最小的記錄,並和第 i 個記錄交換作為有序序列的第 i 個記錄。

其實現利用雙重迴圈,外層 i 控制當前序列最小值存放的陣列元素位置,內層迴圈 j 控制從 i+1 到 n 序列中選擇最小的元素所在位置 k

演算法分析

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

2.在無序區選擇關鍵碼最小的記錄,將其與無序區中的第乙個元素交換,使得有序區擴充套件乙個記錄,同時無序區減少了乙個記錄

3.不斷重複步驟 2,直到無序區只剩下乙個記錄為止

舉例

初始關鍵字:

第一趟排序後:

第二趟排序後:

第三趟排序:

第四趟排序後:

第五趟排序後:

第六趟排序後:

第七趟排序後:

第八趟排序後:

源**

時間複雜度:待排序序列為從小到大的有序序列時,移動次數最小,為0次;待排序序列為從大到小的有序序列時,移動次數最大,為3(n-1)次。

但是無論記錄的初始序列如何,關鍵碼的比較次數相同,第i趟排序需要進行n-i次關鍵碼的比較,而簡單選擇排序需要進行n-1趟排序,因此總的比較次數為o(n^2)

穩定性:不穩定

適用場景:當n<=50,適合使用簡單選擇排序和直接插入排序,如果元素包含的內容過大,簡單選擇排序更合適。

簡單選擇排序適合用於n較小時

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

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 到...