2413: 【例】【普及-】【P1177】快速排序
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:4
解决:4
题目描述
利用快速排序算法将读入的 个数从小到大排序后输出。
快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++ 选手请不要试图使用 STL,虽然你可以使用 sort 一遍过,但是你并没有掌握快速排序算法的精髓。)
输入
第 行为一个正整数 ,第 行包含 个空格隔开的正整数 ,为你需要进行排序的数,数据保证了 不超过 。
输出
将给定的 个数从小到大输出,数之间空格隔开,行末换行且无空格。
样例输入 复制
5
4 2 4 5 1
样例输出 复制
1 2 4 4 5
提示
对于 的数据,有 ;
对于 的数据,有 。
#include<bits/stdc++.h>
using namespace std;
int a[100010],n;
void qsort(int a[],int l,int r) { //引入数组的地址
int i=l,j=r,flag=a[(l+r)/2],tmp;
do {
while (a[i]<flag) i++; //从左找比哨兵大的数;
while (a[j]>flag) j--; //从右找比哨兵小的数;
if (i<=j) { //交换
tmp=a[i];a[i]=a[j];a[j]=tmp;
i++;j--;
}
}while (i<=j);
if (l<j) qsort(a,l,j);
if (i<r) qsort(a,i,r);
}
int main(){
cin>>n;
for (int i=0;i<n;i++)
cin>>a[i];
qsort(a,0,n-1);
for (int i=0;i<n;i++)
cout<<a[i]<<' ';
return 0;
}