版权声明:Nicolas https://blog.csdn.net/qq_42835910/article/details/85322376
算法训练 快速排序
时间限制:1.0s 内存限制:512.0MB
问题描述
快速排序是最经常使用的一种排序方式,对于给定的n个数组成的一个数组,请使用快速排序对其进行排序。
现给定一序列,请用快速排序将其按升序排序并输出。
输入格式
第一行一个数N。
第2~N+1行每行一个数,表示给定序列。
输出格式
共N行,每行一个数,表示所求序列。
样例输入
5
1
4
2
3
4
样例输出
1
2
3
4
4
数据规模和约定
共10组数据。
对100%的数据,N<=10^5,所有数均为非负数且在int范围内。
#include <iostream>
#include <algorithm>
using namespace std;
int a[100001];
void quickSort(int low,int high){
if(high<=low)
return;
int key=a[low];
int h=high,l=low;
while(high>low){
while(high>low && a[high]>=key) high--;
a[low]=a[high];
while(high>low && a[low]<=key) low++;
a[high]=a[low];
}
a[low]=key;
quickSort(l,low-1);
quickSort(low+1,h);
}
int main() {
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
quickSort(0,n-1);
for(int i=0;i<n;i++)
cout<<a[i]<<endl;
return 0;
}