题目描述 Description
给定N(N≤500,000)和N个整数(较有序),将其排序后输出。
输入描述 Input Description
N和N个整数
输出描述 Output Description
N个整数(升序)
样例输入 Sample Input
5
12 11 10 8 9
样例输出 Sample Output
8 9 10 11 12
数据范围及提示 Data Size & Hint
对于33%的数据 N≤10000
对于另外33%的数据 N≤100,000 0≤每个数≤1000
对于100%的数据 N≤500,000 0≤每个数≤2*10^9
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int a[500000]; 5 int qsort(int l,int r) 6 { 7 int i=l; 8 int j=r; 9 int mid=a[(l+r)/2]; 10 do 11 { 12 while(a[i]<mid)i++; 13 while(a[j]>mid)j--; 14 if(i<=j) 15 { 16 swap(a[i],a[j]); 17 i++; 18 j--; 19 } 20 }while(i<=j); 21 if(j>l)qsort(l,j); 22 if(i<r)qsort(i,r); 23 } 24 int main() 25 { 26 int n; 27 cin>>n; 28 for(int i=1;i<=n;i++) 29 { 30 cin>>a[i]; 31 } 32 qsort(1,n); 33 for(int i=1;i<=n;i++) 34 { 35 cout<<a[i]<<" "; 36 } 37 }