網站聲明

本網站包含了各式各樣的資源,如果有侵占到您的著作權,請與本人通知,本人會立即改進。本站所有發表僅屬研究討論性質,如果有任何後果請自行負責。

2014-05-29

TQC+ C 綜合應用一 808 氣泡排序

808.
設計說明:

1. 在main()函數中輸入十個整數,並存於陣列 scoredate中。
2. 將陣列的名稱(scoredate)及陣列的個數(10)傳給排序函數 sorting函數中的 data2及 n,並在 main()函數中輸出此陣列排序前及排序後的元素值。
3. 在 sorting()函數中用氣泡排序法(Bubble Sort)的方法進行排序。
4. 執行結果如範例圖。


參考程式碼:
方法1(先出現最大、次數 (N-1)^2 ):
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. void sorting(int*, int);
  4. int main(){
  5.  int scoredata[10], i;
  6.  printf("請輸入十個數...\n");
  7.  for(i=0;i<10;i++){
  8.   printf("第 %d 個: ",(i+1));
  9.   scanf("%d",&scoredata[i]);
  10.  }
  11.  printf("排序前:");
  12.  for(i=0;i<10;i++)
  13.   printf(" %d",scoredata[i]);
  14.  sorting(scoredata,10);
  15.  printf("\n排序後:");
  16.  for(i=0;i<10;i++)
  17.   printf(" %d",scoredata[i]);
  18.  system("PAUSE");
  19.  return 0;
  20. }
  21. void sorting(int* data2,int n){
  22.  int i, j, temp;
  23.  for(i=0;i<n-1;i++){
  24.   for(j=0;j<n-1;j++){
  25.    if(data2[j]>data2[j+1]){
  26.     temp = data2[j+1];
  27.     data2[j+1] = data2[j];
  28.     data2[j] = temp;
  29.    }
  30.   }
  31.  }
  32. }
方法2(先出現最大、次數 (N-1)! ):
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. void sorting(int*, int);
  4. int main(){
  5.  int scoredata[10];
  6.  int i;
  7.  printf("請輸入十個數...\n");
  8.  for(i=0;i<10;i++){
  9.   printf("第 %d 個: ",(i+1));
  10.   scanf("%d",&scoredata[i]);
  11.  }
  12.  printf("排序前:");
  13.  for(i=0;i<10;i++)
  14.   printf(" %d",scoredata[i]);
  15.  sorting(scoredata,10);
  16.  printf("\n排序後:");
  17.  for(i=0;i<10;i++)
  18.   printf(" %d",scoredata[i]);
  19.  system("PAUSE");
  20.  return 0;
  21. }
  22. void sorting(int* data2,int n){
  23.  int i, j, temp;
  24.  for(i=0;i<n-1;i++){
  25.   for(j=0;j<n-i-1;j++){
  26.    if(data2[j]>data2[j+1]){
  27.     temp = data2[j+1];
  28.     data2[j+1] = data2[j];
  29.     data2[j] = temp;
  30.    }
  31.   }
  32.  }
  33. }
方法3(先出現最小、次數 (N-1)^2 )
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. void sorting(int*, int);
  4. int main(){
  5.  int scoredata[10];
  6.  int i;
  7.  printf("請輸入十個數...\n");
  8.  for(i=0;i<10;i++){
  9.   printf("第 %d 個: ",(i+1));
  10.   scanf("%d",&scoredata[i]);
  11.  }
  12.  printf("排序前:");
  13.  for(i=0;i<10;i++)
  14.   printf(" %d",scoredata[i]);
  15.  sorting(scoredata,10);
  16.  printf("\n排序後:");
  17.  for(i=0;i<10;i++)
  18.   printf(" %d",scoredata[i]);
  19.  system("PAUSE");
  20.  return 0;
  21. }
  22. void sorting(int* data2,int n){
  23.  int i, j, temp;
  24.  for(i=0;i<n-1;i++){
  25.   for(j=n-1;j>0;j--){
  26.    if(data2[j-1]>data2[j]){
  27.     temp = data2[j];
  28.     data2[j] = data2[j-1];
  29.     data2[j-1] = temp;
  30.    }
  31.   }
  32.  }
  33. }
方法4(先出現最小、次數 (N-1)! )
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. void sorting(int*, int);
  4. int main(){
  5.  int scoredata[10];
  6.  int i;
  7.  printf("請輸入十個數...\n");
  8.  for(i=0;i<10;i++){
  9.   printf("第 %d 個: ",(i+1));
  10.   scanf("%d",&scoredata[i]);
  11.  }
  12.  printf("排序前:");
  13.  for(i=0;i<10;i++)
  14.   printf(" %d",scoredata[i]);
  15.  sorting(scoredata,10);
  16.  printf("\n排序後:");
  17.  for(i=0;i<10;i++)
  18.   printf(" %d",scoredata[i]);
  19.  system("PAUSE");
  20.  return 0;
  21. }
  22. void sorting(int* data2,int n){
  23.  int i, j, temp;
  24.  for(i=0;i<n-1;i++){
  25.   for(j=n-1;j>i;j--){
  26.    if(data2[j-1]>data2[j]){
  27.     temp = data2[j];
  28.     data2[j] = data2[j-1];
  29.     data2[j-1] = temp;
  30.    }
  31.   }
  32.  }
  33. }

氣泡排序法重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來...(詳細)。

TQC+ C 試題總整理

聲明:

這裡的範例程式碼皆由本人親自編輯,歡迎轉載本教學,但請註明本網站,尊重一下作者的心血

沒有留言:

張貼留言

歡迎留言,較舊文章需要留言審核看不到自己的留言是正常的。
若長時間無回應請使用以下聯絡方式:
填寫表單:https://forms.gle/hxxX9n4tATcFnhnk8
寄信到:happyplayblogs@gmail.com