C語言 | 選擇法排序

原創 閆小林 C語言入門到精通 1月13日編程

收錄於話題數組

#C語言實戰練習ide

103個函數

「要成爲絕世高手,並不是一朝一夕,除非是天生武學奇才,可是這種人…萬中無一」
學習

——包租婆
這道理放在C語言學習上也一併受用。在編程方面有着天賦異稟的人畢竟是少數,咱們大多數人想要從C語言小白進階到高手,須要經歷的是日積月累的學習。那麼如何學習呢?固然是天天都練習一道C語言題目!!spa

圖片


做者blog

閆小林排序

白天搬磚,晚上作夢。我有故事,你有酒麼?圖片


例60:C語言實現用選擇法對10個整數排序。
解析:選擇排序思路以下,設有10個元素a[1]~a[10],將a[1]與a[2]~a[10],若a[1]比a[2]~a[10]都小,則不進行交換,即無任何操做。
若a[2]~a[10]中有一個以上比a[1]小,則將其中最大的一個,與a[1]交換,此時a[1]中存放了10箇中最小的數。依次類推,共進行9輪比較,a[1]~a[10]就已按由小到大的順序存放了。 
總體代碼邏輯爲了讓讀者更加清晰,小林這裏分爲四部分:

第一部分 鍵盤輸入10個數:

ci

for(i=1;i<=10;i++)//依次鍵盤錄入10個數據 
  {
    printf("array[%d]=",i-1);//數組下標從0開始 
    scanf("%d",&array[i]);
  }

第二部分 輸出鍵盤錄入的10個數:
for(i=1;i<=10;i++)//將鍵盤錄入的10個數原樣輸出 
  {
    printf("%5d",array[i]);
  }

第三部分 排序邏輯:
for(i=1;i<=9;i++)
  {
    min=i;//把第一個數做爲最小的 
    for(j=i+1;j<=10;j++)
    { 
      if(array[min]>array[j])//判斷大小,小的爲min 
      {
        min=j;
      } 
    }
      temp=array[i]; //大小交換 
      array[i]=array[min];
      array[min]=temp; 
  }

第四部分 排序後的10個數:
for(i=1;i<=10;i++)//輸出排序後的10個數 
  {
    printf("%5d",array[i]);
  }

源代碼演示:
#include<stdio.h>//頭文件 
int main()//主函數 
{
  int i,j,min,temp,array[11];//定義整型變量和數組 
  printf("輸入數據:\n");//提示語句 
  for(i=1;i<=10;i++)//依次鍵盤錄入10個數據 
  {
    printf("array[%d]=",i-1);//數組下標從0開始 
    scanf("%d",&array[i]);
  }
  printf("\n");//換行 
  printf("原樣輸出:\n");//提示語句 
  for(i=1;i<=10;i++)//將鍵盤錄入的10個數原樣輸出 
  {
    printf("%5d",array[i]);
  }
  printf("\n");//換行
  for(i=1;i<=9;i++)
  {
    min=i;//把第一個數做爲最小的 
    for(j=i+1;j<=10;j++)
    { 
      if(array[min]>array[j])//判斷大小,小的爲min 
      {
        min=j;
      } 
    }
      temp=array[i]; //大小交換 
      array[i]=array[min];
      array[min]=temp; 
  } 
  printf("排序輸出:\n");//提示語句 
  for(i=1;i<=10;i++)//輸出排序後的10個數 
  {
    printf("%5d",array[i]);
  }
  printf("\n");//換行
  return 0;//主函數返回值爲0 
}

編譯運行結果以下:
輸入數據:
array[0]=1
array[1]=4
array[2]=7
array[3]=9
array[4]=4
array[5]=3
array[6]=7
array[7]=9
array[8]=5
array[9]=3

原樣輸出:
    1    4    7    9    4    3    7    9    5    3
排序輸出:
    1    3    3    4    4    5    7    7    9    9

--------------------------------
Process exited after 8.036 seconds with return value 0請按任意鍵繼續. . .
相關文章
相關標籤/搜索