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 n;
int a[10000];
void Quicksort(int a[], int st, int ed);
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]<<endl;
}
return 0;
}
void Quicksort(int a[], int st, int ed)
{
if(st>=ed)
{
return;
}
else
{
int tmp=a[ed];
int i=st;
int j=ed;
while(i<j)
{
while(i<j&&a[i]<=tmp) i++;
while(j>i&&a[j]>=tmp) j--;
if(i<j)
{
swap(a[i],a[j]);
}
}
swap(a[ed],a[i]);
Quicksort(a, st, i-1);
Quicksort(a, i+1, ed);
}
}