選擇排序法實現的步驟:先找出一個最小數交換到最前面;然後在剩下的數中找個最小的交換到剩下數最前面;最後一直重複此步驟,直到所有數字排好即可。
選擇排序法實現的步驟:找出一個最小數交換到最前面,然後在剩下的數中找個最小的交換到剩下數字最前面,一直重複此步驟,直到所有數字排好
#【推薦課程:##C語言教學】
在C語言中選擇排序法是較常見的方法,它的排序效率比冒泡法高且演算法也不複雜。選擇排序法的想法是:
1、找出一個最小數,交換到最前面。 2、在剩下的數裡面,再找一個最小的,交換到剩下數的最前面3、重複步驟2 ,直到所有數字都已排好。 顯然,對於含有N個數的陣列來說,其過程也要進行N-1趟 ( 0 <= i < N-1 )。找出一個最小數,交換到最前面的方法是:
先將剩下數中的第一個數(序號是i)當作基數,用變數k記下其序號,後面的數依序與該基數比較,若比基數還小,則用k記下其序號(注意:此時不要交換),當所有數都與基數比較後,k中存放的就是最小數的序號,然後將它交換到最前面(現在才交換)。在上面的過程中,資料只交換了一次,就是每趟只交換一次資料。 範例:#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語言中如何實作選擇排序演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!