首頁 >常見問題 >C語言中如何實作選擇排序演算法

C語言中如何實作選擇排序演算法

清浅
清浅原創
2019-04-09 11:53:0239663瀏覽

選擇排序法實現的步驟:先找出一個最小數交換到最前面;然後在剩下的數中找個最小的交換到剩下數最前面;最後一直重複此步驟,直到所有數字排好即可。

C語言中如何實作選擇排序演算法

選擇排序法實現的步驟:找出一個最小數交換到最前面,然後在剩下的數中找個最小的交換到剩下數字最前面,一直重複此步驟,直到所有數字排好

C語言中如何實作選擇排序演算法

#【推薦課程:##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語言中如何實作選擇排序演算法

#總結:以上就是這篇文章的全部了,希望對大家有幫助

以上是C語言中如何實作選擇排序演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

相關文章

看更多