天天看點

藍橋杯基礎訓練--BASIC-13 冒泡排序

數列排序

問題描述

  給定一個長度為n的數列,将這個數列按從小到大的順序排列。1<=n<=200

輸入格式

  第一行為一個整數n。

  第二行包含n個整數,為待排序的數,每個整數的絕對值小于10000。

輸出格式

  輸出一行,按從小到大的順序輸出排序後的數列。

樣例輸入

5

8 3 6 4 9

樣例輸出

3 4 6 8 9

代碼:

using namespace std;
const int maxn = 1e3;
int a[maxn];
int main() {
	int i,n;
	while (cin >> n) {       //輸入資料個數

		for (i = 0; i < n; i++)//循環輸入資料存儲進數組
		{
			int x;
			cin >> x;
			a[i] = x;
		}
		int temp;//定義臨時變量
		for (int j = n; j > 1; j--) {                //控制比較的次數因為剩最後一個數天然有序是以比較n-1個數就可以
			for (i = 0; i < j - 1; i++) {            //每個數比較j-1次,因為每比較一個數後就會出現一個最大的數,下次循環可不将下一個數與最本次循環得出的最大的數比較
				if (a[i] > a[i + 1]) {               //每次比較相鄰的兩個數
					temp = a[i];
					a[i] = a[i + 1];
					a[i + 1] = temp;
				}
			}
		}
		for (i = 0; i <	n; i++) {
			cout << a[i]<<" ";
		}
	}
}

           

學。。。。。

繼續閱讀