簡單選擇排序
基本思想:比較+交換
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 簡單排序演算法 思路 從每個點開始算起,將每個點與後面的點比較選...