C說話選擇排序算法及實例代碼。本站提示廣大學習愛好者:(C說話選擇排序算法及實例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話選擇排序算法及實例代碼正文
選擇排序是排序算法的一種,這裡以從小到年夜排序為例停止講授。
根本思惟及舉例解釋
選擇排序(從小到年夜)的根本思惟是,起首,選出最小的數,放在第一個地位;然後,選出第二小的數,放在第二個地位;以此類推,直到一切的數從小到年夜排序。
在完成上,我們平日是先肯定第i小的數地點的地位,然後,將其與第i個數停止交流。
上面,以對 3 2 4 1 停止選擇排序解釋排序進程,應用min_index 記載以後最小的數地點的地位。
第1輪 排序進程 (尋覓第1小的數地點的地位)
3 2 4 1(最後, min_index=1)
3 2 4 1(3 > 2, 所以min_index=2)
3 2 4 1(2 < 4, 所以 min_index=2)
3 2 4 1(2 > 1, 所以 min_index=4, 這時候候肯定了第1小的數在地位4)
1 2 4 3 (第1輪成果,將3和1交流,也就是地位1和地位4交流)
第2輪 排序進程 (尋覓第2小的數地點的地位)
1 2 4 3(第1輪成果, min_index=2,只須要從地位2開端尋覓)
1 2 4 3(4 > 2, 所以min_index=2)
1 2 4 3(3 > 2, 所以 min_index=2)
1 2 4 3(第2輪成果,由於min_index地位恰好在第2個地位,無需交流)
第3輪 排序進程 (尋覓第3小的數地點的地位)
1 2 4 3(第2輪成果, min_index=3,只須要從地位2開端尋覓)
1 2 4 3(4 > 3, 所以min_index=4)
1 2 3 4(第3輪成果,將3和4交流,也就是地位4和地位3交流)
至此,排序終了。
總結及完成
選擇排序對年夜小為N的無序數組R[N]停止排序,停止N-1輪選擇進程。第i輪拔取第i小的數,並將其放在第i個地位上。當第N-1次完成時,第N小(也就是最年夜)的數天然在最初的地位上。
上面給出選擇排序的C說話完成。
#include<stdio.h> #include<stdlib.h> #define N 8 void select_sort(int a[],int n); //選擇排序完成 void select_sort(int a[],int n)//n為數組a的元素個數 { //停止N-1輪選擇 for(int i=0; i<n-1; i++) { int min_index = i; //找出第i小的數地點的地位 for(int j=i+1; j<n; j++) { if(a[j] < a[min_index]) { min_index = j; } } //將第i小的數,放在第i個地位;假如恰好,就不消交流 if( i != min_index) { int temp = a[i]; a[i] = a[min_index]; a[min_index] = temp; } } } int main() { int num[N] = {89, 38, 11, 78, 96, 44, 19, 25}; select_sort(num, N); for(int i=0; i<N; i++) printf("%d ", num[i]); printf("\n"); system("pause"); return 0; }
以上就是對C說話選擇排序算法的詳解,有須要的同伙可以參考下。