內容

RT,基本排序題

由於大家都用慣了內建sort,或許有些人早已忘記(或不曾知道)如何自己寫sort,因此本題要求自己寫sorting algorithm而不得使用任何內建相關的函數。

以下為禁止使用的標頭檔(不得include):

  1. 不得使用任何子目錄底下的標頭檔,例如"bits/stdc++.h"是位於子目錄"bits"底下的"stdc++.h",因此不得使用
  2. 不得使用任何包含標頭檔"algorithm"的標頭檔,包含"algorithm"本身

以下為禁止使用的資料結構與函數(不得於程式碼中出現該文字,因此其衍伸資料結構也不得使用,也請避免使用以下關鍵字作為自訂函數/變數名稱):

  1. list
  2. set
  3. map
  4. qsort
  5. priority_queue

此外,本題僅能以c++語言作答



輸入說明

第一行有一個正整數n代表數列長度

第二行有n個以空白隔開的正整數ai,分別為數列的每一項

1≤n≤10000 , 1≤ai≤10⁹

輸出說明

輸出一行n個以空白隔開的正整數,為排序後的序列

本題為嚴格比對,因此不得有任何多餘的空行與行尾空白 

(絕對不是因為我懶得寫寬鬆匹配的程式X



範例輸入

5

7 3 9 15 4

範例輸出

3 4 7 9 15



程式碼

#include <iostream>
using namespace std;
int main() {
  int n;
  while(cin>>n){
    int arr[n];
    for(int l = 0; l < n; l++){
      cin>>arr[l];
    }
    //bubble sort
    for(int i = n; i > 0; i--){ 
      for(int j = 0; j < i-1; j++){
        if(arr[j] > arr[j+1]){
          swap(arr[j], arr[j+1]);
        }
      }
    }
    //輸出排好的數字
      for(int k = 0; k < n; k++){
        cout<<arr[k];
        if(k == n-1){
          break;
        }
        else{
          cout<<" ";
        }
      }
      cout<<endl;   //換行
  }
}


解說

這題有多筆測資,所以用while(cin>>n),他題目沒寫害我錯了好多次QmQ

那n個正整數要放進陣列裡,因為不能用sort,所以就只能自己寫bubble sort(氣泡排序法),就是中間那個雙層迴圈。

題目說不得有任何多餘的空行與行尾空白,所以要用個判斷式,在最後一個數字輸出後就不能再輸出空格了。

那為甚麼是n-1呢?

有學過陣列的應該就會知道,陣列是第一個位置是0,但平常人所說的位置一定是從1開始,所以就要減1,沒減的話......絕對不會有AC就對了!

最後要寫上換行的程式。