程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話選擇排序算法及實例代碼

C說話選擇排序算法及實例代碼

編輯:關於C++

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說話選擇排序算法的詳解,有須要的同伙可以參考下。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved