題目描述
給定你一個長度爲n的整數數列。
請你使用快速排序對這個數列按照從小到大進行排序。
並將排好序的數列按順序輸出。
輸入格式
輸入共兩行,第一行包含整數 n。
第二行包含 n 個整數(所有整數均在1~109範圍內),表示整個數列。
輸出格式
輸出共一行,包含 n 個整數,表示排好序的數列。
數據範圍
1≤n≤1000000
輸入樣例:
5
3 1 2 4 5
輸出樣例:
1 2 3 4 5
快速排序模板思想:在區間內找到一個基準,小於基準的放到左邊,大於基準的放到右邊
代碼如下:
#include<iostream>
using namespace std;
const int N = 1e6 + 10;
int a[N];
void quick_sort(int l, int r)
{
if(l >= r)return ;
int i = l -1, j = r + 1, x = a[l];
while(i < j){
while(a[++i] < x);
while(a[--j] > x);
if(i < j)swap(a[i], a[j]);
else break;
}
quick_sort(l, j), quick_sort(j + 1, r);
}
int main()
{
int n;
cin >> n;
for(int i = 0; i < n; i++)
cin >> a[i];
quick_sort(0, n - 1);
for(int i = 0; i < n; i++)
cout << a[i] << ' ';
cout << endl;
return 0;
}