1. 程式人生 > >排序方法(選擇排序)

排序方法(選擇排序)

選擇排序法
我們先用三個數放入a, b, c,變數中排序簡單來探究選擇排序法思想。第一輪先將a和b比較,較大數放入a中,再將a和c比較大的數放入a中;
比如
a=6; b=7;c=8;
第一輪確定第一位
第一次比較
a=7;b=6;c=8;
第二次比較
a=8;b=6;c=7;
第二輪後確定第二位
第一次比較
a=8;b=7;c=6;經過三次比較終於排序好了。
這次將 77 45 26 89 9五個數從小到大排列;
第一輪確定第一位
77 45 26 86 9 原始資料
77 45 26 86 9 77和45比較,45比77小,互換位置
45 77 26 86 9 45和26比較,26比45小,互換位置
26 77 45 86 9 26和86比較,86比26大,不變位置
26 77 45 86 9 26和9比較, 9比26小,互換位置
9 77 45 86 26 第一輪結果確定第一位數;
第二論排序後 9 26 77 86 45
第三論排序後 9 26 45 86 77
第四論排序後 9 26 45 77 86 已經排好不需要繼續;
程式碼實現

#include<stdio.h>
int main()
{
 int a[5],i,t,j;
 for(i=0;i<5;i++)//輸入五個數 
  scanf("%d",&a[i]);
 for(i=1;i<=4;i++)//對於五個數只需4輪確定前四位 
 {
  for(j=i+1;j<5;j++)//a[i]需要和a[i+1]比較 
  {
   if(a[i]>a[j])//從小到大 
   {
    t=a[i];//交換位置 
    a[i]=a[j];
    a[j]=t;
   }
  }
 }
 for(i=0;i<5;i++)
  printf("%d\t",a[i]);//輸出排序 
 return 0;
}

選擇排序已經完了,還有一種氣泡排序和這差不多。選擇排序是位置從前面確定過來。而氣泡排序位置是從後面確定到前面。