题目描述
利用快速排序算法将读入的 N 个数从小到大排序后输出。
输入格式
第 1 行为一个正整数 N ,第 2 行包含 N 个空格隔开的正数 ai,为你需要进行排序的数,数据保证了 ai不超过 1000,000,000。
输出格式
将给定的 N 个数从小到大输出,数之间空格隔开,行末换行且无空格。
输入输出样例
输入
5
4 2 4 5 1
输出
1 2 4 4 5
说明/提示
时间限制 3.00s
内存限制 125.00MB
对于 20% 的数据,有 N ≤ 1000;
对于 100% 的数据,有 N ≤ 1000,00。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
int n;
void QuickSort(int a[],int l,int r){
if(l>=r) return ;
int i=l-1,j=r+1,x=a[l+r>>1];
while(i<j){
do i++; while(a[i]<x);
do j--; while(a[j]>x);
if(i<j) swap(a[i],a[j]);
}
QuickSort(a,l,j),QuickSort(a,j+1,r);
}
int main(){
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
QuickSort(a,0,n-1);
for(int i=0;i<n;i++) cout<<a[i]<<" ";
return 0;
}