Board logo

標題: 排序 (二) [打印本頁]

作者: 鄭繼威    時間: 2023-2-1 02:29     標題: 排序 (二)

本帖最後由 鄭繼威 於 2023-2-8 20:36 編輯

產生10個範圍介於1~20之不重複隨機亂數, 並利用選擇排序法將它們由小而大排列出來.
排序 (一)一樣,只是陣列的值不是一開始給定而是產生出亂數再丟進陣列裡
至於怎麼產生?又要不重複?可以複習一下之前上的產生介於指定範圍內的隨機亂數 (六)-不重複

  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<ctime>
  4. using namespace std;
  5. int main()
  6. {
  7.     srand(time(NULL));
  8.     int tmp;
  9.     int n[10];        //宣告長度為10的陣列
  10.    
  11.     //產生10個範圍介於1~20之不重複隨機亂數放進n陣列裡
  12.     for(int i=0; i<=9; i++)
  13.     {
  14.         //n[i]=亂數
  15.         //1~20->0~19->rand()%20->rand()%20+1
  16.         n[i]=rand()%20+1;        //1~20
  17.         //檢查
  18.         for(int j=0; j<=i-1; j++)
  19.         {
  20.             //如果跟前面一樣就退一步
  21.             if(n[i]==n[j])
  22.             {
  23.                 i--;
  24.                 break;
  25.             }      
  26.         }
  27.     }
  28.    
  29.     cout<<"排序前: ";
  30.     for(int i=0; i<10; i++)
  31.     {
  32.         cout<<n[i]<<" ";
  33.     }
  34.         cout<<endl;
  35.        
  36.     //開始排序
  37.     for(int i=0; i<9; i++)
  38.     {
  39.         for(int j=i+1; j<10; j++)
  40.         {
  41.             //倆倆(i,j)比較
  42.             //右邊小於左邊就交換->換到最後最左邊會最小
  43.             if(n[j]<n[i])
  44.             {
  45.                 //兩數交換
  46.                 tmp=n[j];
  47.                 n[j]=n[i];
  48.                 n[i]=tmp;
  49.             }
  50.         }   
  51.     }
  52.    
  53.     cout<<"排序後: ";
  54.     for(int i=0; i<10; i++)
  55.     {
  56.             cout<<n[i]<<" ";
  57.     }
  58.         cout<<endl;
  59.        
  60.     system("pause");
  61.     return 0;
  62. }
複製代碼

作者: 連翊恩    時間: 2023-2-8 20:38

此帖僅作者可見
作者: 林劭澧    時間: 2023-2-8 20:46

此帖僅作者可見
作者: 李彣    時間: 2023-2-8 20:48

此帖僅作者可見
作者: 林劭杰    時間: 2023-2-8 20:56

此帖僅作者可見
作者: 黃裕恩    時間: 2023-2-11 22:03

此帖僅作者可見




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2