排序---選擇排序

按照由小到大的順序排列,選擇排序基本步驟:算法

一、從已有的元素中選擇一個最小的元素與第一個元素交換;blog

二、對剩下的n-1個數值重複1的步驟,直到剩下的數值個數爲1。排序

令minIdx爲最小元素下標,好比5,4,3,2,1的排序步驟以下:im

第一遍:minIdx=0; 4<5,minIdx=1;  3<4,minIdx=2;   2<3,minIdx=3;   1<2,minIdx=4;比較次數爲4次,最後將第一個元素5和minIdx對應的元素交換獲得1,4,3,2,5  數據

第二遍:minIdx=1; 3<4,minIdx=2;  2<3,minIdx=3; 因爲2 <5,因此最終minIdx=3;比較次數爲3次,而後將第二份元素與minIdx對應的元素交換獲得1,2,3,4,5img

第三遍:minIdx=2;因爲 3<4<5,因此最終minIdx=2;比較次數爲2次,無需交換元素順序依然爲1,2,3,4,5時間

第四遍:minIdx=3;因爲4<5,因此最終minIdx=3;比較次數爲1次,無需交換元素順序依然爲1,2,3,4,5co

時間複雜度永遠都是:,交換元素的次數最多隻有N-1次,明顯比冒泡排序少了。雖然冒泡排序在序列已經有序的時侯比較次數是N-1次,也不須要交換元素此時會比選擇排序快,可是平均狀況下比較次數和選擇排序同樣,交換次數卻比選擇排序多得多,因此選擇排序會比冒泡排序要快點。ps

選擇排序算法是不穩定的,由於當數據相同時會發生位置交換,如序列:3,3,2,4,1第一次交換就變成了1,3,2,4,3。

相關文章
相關標籤/搜索