原理
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。一種簡單直觀的排序演算法。
例子將陣列[3,6,4,2,5,1]進行從大到小排序
排序步驟:
第一趟找到最小數1,放到最前邊(與首位數字交換)
交換前:| 3 | 6 | 4 | 2 | 5 | 1 |
交換後:| 1 |
6 | 4 | 2 | 5 | 3 |
第二趟找到剩餘[6,4,2,5,3]數字裡的最小數2,與當前陣列的首位數字進行交換
交換前:| 1 | 6 | 4 | 2 |
5 | 3 |
交換後:| 1 | 2 |
4 | 6 | 5 | 3 |
第三趟找到剩餘[4,6,5,3]數字裡的最小數3,與當前陣列的首位數字進行交換
交換前:| 1 | 2 | 4 | 6 | 5 | 3 |
交換後:| 1 | 2 | 3 |
6 | 5 | 4 |
第四趟找到剩餘[6,5,4]數字裡的最小數4,與當前陣列的首位數字進行交換
交換前:| 1 | 2 | 3 | 6 |
5 | 4 |
交換後:| 1 | 2 | 3 | 4 |
5 | 6 |
第五趟找到剩餘[5,6]數字裡的最小數5,本來就在首位,無須交換
交換前:| 1 | 2 | 3 | 4 | 5 | 6 |
交換後:| 1 | 2 | 3 | 4 | 5 | 6 |
至此,排序完畢,輸出最終結果1 2 3 4 5 6
動畫演示
**參考
static參考資料void main(string
args)
;selection_sort(intarray);
foreach (var item in
intarray)
console.readline();
}static
void selection_sort(int
unsorted)
}if (min !=i)}}
維基百科
演算法基礎之選擇排序
說一下選擇排序的基本演算法 現在有這樣乙個陣列,3 4 6 1 7 2 5 8 我們對其進行從小到大的排序 現在我們預設陣列中第乙個元素就是陣列中的最小值,將它與其後邊的所有元素進行比較,當有元素的值小於當前預設最小元素時,交換這兩個元素的順序。當陣列第乙個元素小於後邊所有元素時,我們再用陣列第二個...
演算法基礎之選擇排序
選擇排序是排序演算法當中的入門演算法,相信學過資料結構與演算法的同學都是從這個排序開始的吧。大一接觸選擇排序演算法的時候覺得好簡單 相比氣泡排序來說 因為它的實現方式比較接近於人的思維方式。顧名思義,選擇排序演算法,起碼會有個 選擇 的過程吧?沒錯,選擇排序就是設定了兩個區域,乙個為有序區,另乙個則...
基礎演算法之選擇排序演算法
在要排序的一組數中,選出最小 或者最大 的乙個數與第1個位置的數交換 然後在剩下的數當中再找最小 或者最大 的與第2個位置的數交換,依次類推,直到第n 1個元素 倒數第二個數 和第n個元素 最後乙個數 比較為止。def select sort array for i in range len arr...