排序演算法之 簡單選擇排序及時間複雜度分析

2021-10-05 21:39:14 字數 804 閱讀 9301

簡單選擇排序

基本思想:比較+交換

1. 從待排序序列中,找到關鍵字最小的元素;

2. 如果最小元素不是待排序序列的第乙個元素,將其和第乙個元素互換;

3. 從餘下的 n - 1 個元素中,找出關鍵字最小的元素,重複(1)、(2)步,直到排序結束。

因此我們可以發現,簡單選擇排序也是通過兩層迴圈實現。

第一層迴圈:依次遍歷序列當中的每乙個元素

第二層迴圈:將遍歷得到的當前元素依次與餘下的元素進行比較,符合最小元素的條件,則交換。

排序演算法實現

int i,j,k,temp;

for(i=

0; i

1; i++

)//依次遍歷序列中每乙個元素,進行n-1輪,最後一輪只剩下最後乙個元素

if(k != i)

//進行交換

}

簡單選擇排序時間複雜度分析

此排序的最大特點就是交換移動資料次數相當少,節約了相應的時間

無論最好還是最壞情況,其比較次數都是一樣多的,共需要比較 (n-1)+ (n-2)+…+ 2 + 1 = n * (n-1)/2次;

而對交換次數而言,當最好的時候,交換0次,最差時,交換n-1次;

基於最終的排序時間是比較和交換次數總和,因此,總的時間複雜度依然為o(n^2),但效能優於氣泡排序。

排序演算法之簡單選擇排序

簡單選擇排序演算法,它的概念就是在要排序的一組數中,選出最小 或者最大 的一 個數與第1個位置的數交換 然後在剩下的數當中再找最小 或者最大 的與第2個位置的數交換,依次類推,直到第n 1個元素 倒數第二個數 和第n個元素 最後 乙個數 比較為止。這個演算法是很容易理解的,那麼,直接上 最下面的乙個...

排序演算法之簡單選擇排序

學習 輕鬆學演算法 簡單選擇排序 簡單選擇排序的思想很簡單,假設我們要從小到大排序,那麼我們可以這樣 從未排序的數列中找到最小的數,放在第乙個位置,讓原來在第乙個位置上的數放到最小數的位置,那麼第乙個位置上就是最小數,他是有序的。接著在剩下的未排序的數列中,再找到最小數,放在第二個位置,讓原來第二個...

排序演算法之簡單選擇排序

演算法思路 這個真的是超級簡單的演算法,從陣列起點開始,每次迴圈都確定陣列的乙個空間存什麼,裡面的巢狀迴圈 每次都要遍歷未排序的部分來找到最小的數字,退出這個小迴圈後,將這個最小值放到當前操作的陣列下標中。package choice 簡單排序演算法 思路 從每個點開始算起,將每個點與後面的點比較選...