【C語言】簡單排序(三)選擇排序
阿新 • • 發佈:2018-12-18
一、演算法框圖
二、程式碼實現
/******************** 名稱:選擇排序 作者:豆豆 ********************/ #include<stdio.h> #define LENGTH 6 //巨集定義數列長度為 6 int main() { //【初始化】數列 int a[LENGTH]={18,8,64,56,34,7}; //這裡用到了數列長度 6 int s=0; //用來儲存最小數字的【序號】 //列印初始數列,檢視初始化是否成功 printf("--------------------\n\n"); printf("初始數列為:\n"); printf("%d %d %d %d %d %d\n\n", a[0],a[1],a[2],a[3],a[4],a[5]); //避免這行太長,加了一個換行 printf("--------------------\n"); //開始排序 for(int i=0;i<LENGTH-1;i++) //第一層迴圈,i代表【趟數】 { //選擇排序【趟數】可以比數列長度小 1,因為最後一個一定是最大值 s=i; printf("【第%d趟】\n",i+1); for(int j=i;j<LENGTH;j++) //第二層迴圈,j代表【每一趟】數字的【序號】 { if(a[s]>a[j]) s=j; } int t; //快取變數 //交換 t = a[i] ; a[i] = a[s] ; a[s] = t ; printf("%d %d %d %d %d %d\n", a[0],a[1],a[2],a[3],a[4],a[5]); printf("--------------------\n"); } //輸出結果 printf("\n排序後數列為:\n"); printf("%d %d %d %d %d %d\n", a[0],a[1],a[2],a[3],a[4],a[5]); return 0; }
三、執行結果
-------------------- 初始數列為: 18 8 64 56 34 7 -------------------- 【第1趟】 7 8 64 56 34 18 -------------------- 【第2趟】 7 8 64 56 34 18 -------------------- 【第3趟】 7 8 18 56 34 64 -------------------- 【第4趟】 7 8 18 34 56 64 -------------------- 【第5趟】 7 8 18 34 56 64 -------------------- 排序後數列為: 7 8 18 34 56 64