選擇排序是一種攻擊性演算法,它的工作原理是從陣列中找到最小的數字,然後將其放在第一個位置。下一個要遍歷的陣列將從最小數字所在位置的下一個索引開始。
讓我們舉個例子來更清楚地說明這個概念。
我們有一個陣列 {6, 3, 8, 12, 9} 在這個陣列中最小的元素是 3。所以我們將 3 放在第一個位置,之後數組會看起來像 {3, 6, 8, 12, 9} 。現在我們將再次找到最小的數字,但這次我們不會在搜尋中考慮 3,因為它在它的位置。找到下一個最小元素 6,在第二個位置建立一個包含 6 的數組,然後再次在數組中搜索,直到數組排序完畢。
選擇排序演算法的工作原理-
選擇排序演算法遵循以下步驟
讓我們採用一個陣列{20, 12 , 23, 55 ,21}
將陣列的第一個元素設定為最小值。
最小值= 20
將最小值與下一個元素進行比較,如果它小於最小值分配該元素為最小值。這樣做直到數組末尾。
與12 : 20 > 12 比較,最小值= 12
#與23 : 12 #與55 比較:12
與21 比較:12
將最小值放在陣列的第一個位置(索引0)。
Array = {12, 20 ,23, 55, 21}
#對於下一個迭代,開始從第一個未排序元素開始排序。
Array = {12, 20 ,23, 55, 21}
從 20 開始搜索,下一個放置最小值的元素。
迭代2:
最小值= 20
與23 比較:20
與55 比較:20
與21 比較:20
最小值不變,
陣列= {12, 20 , 23, 55, 21}
迭代3:
最小值= 23。
與55 比較:23
與21 比較: 23 > 21 ,最小值= 21
## 最小值移至索引= 2Array = {12, 20, 21, 55, 23}迭代4:##最小值= 55
#與23 比較: 23
最小值移至索引 3 陣列 = { 12 , 20 , 21 , 23 , 55 }
#include <stdio.h> int main() { int arr[10]={6,12,0,18,11,99,55,45,34,2}; int n=10; int i, j, position, swap; for (i = 0; i < (n - 1); i++) { position = i; for (j = i + 1; j < n; j++) { if (arr[position] > arr[j]) position = j; } if (position != i) { swap = arr[i]; arr[i] = arr[position]; arr[position] = swap; } } for (i = 0; i < n; i++) printf("%d\t", arr[i]); return 0; }
0 2 6 11 12 18 34 45 55 99
以上是選擇排序的C程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!