1003.快速排序
时限:1000ms 内存限制:10000K 总时限:3000ms
描述
给定一个数列,用快速排序算法把它排成升序。
输入
第一行是一个整数n(n不大于10000),表示要排序的数的个数;下面一行是用空格隔开的n个整数。
输出
输出排序后的数列,每个数字占一行。
输入样例
5
3 2 1 4 5
输出样例
1
2
3
4
5
#include<iostream>
using namespace std;
int a[10005],n;
void sort(int left,int right){
int temp = a[left];
if(right > left){
int i = left,j = right ;
while(i < j){
while(i < j&&a[j] >= temp){//右边找第一个比它小的
j -- ;
}
a[i] = a[j];
while(i < j&&a[i] <= temp){//左边找第一个比它小的
i ++ ;
}
a[j] = a[i];
}
a[i] = temp;
sort(left,i-1);
sort(i+1,right);
}
}
int main(){
int i;
// freopen("input.txt","r",stdin);
cin>>n;
for(i = 0; i < n;i++){
cin>>a[i];
}
sort(0,n-1);
for(i = 0;i < n;i++){
cout<<a[i]<<endl;
}
return 0;
}