问题 D: 二分递归快排(Qsort) [2*]
时间限制: 1 Sec 内存限制: 128 MB题目描述
二分递归快排(Qsort)
用二分递归的方法实现快排
输入:第一行一个数据n,表示有n个数要排序。接下来n行每行一个<=10^7的整数。
输出:n行,由小到大排序后的数据
数据规模:n<=10^5
思考:两个递归都会被执行吗?有几种可能?
用二分递归的方法实现快排
输入:第一行一个数据n,表示有n个数要排序。接下来n行每行一个<=10^7的整数。
输出:n行,由小到大排序后的数据
数据规模:n<=10^5
思考:两个递归都会被执行吗?有几种可能?
User: 吴锦诚 Date: 2018/6/11
#include <iostream>
#include <string.h>
#include <algorithm>
using
namespace
std;
void
quickSort(
int
a[],
int
left,
int
right){
int
i = left,j = right,temp = a[left];
if
(i<j){
while
(i<j){
while
(i<j && temp <a[j])
j--;
a[i] = a[j];
while
(i<j && temp >= a[i])
i++;
a[j] = a[i];
}
a[i] = temp;
quickSort(a,left,i-1);
quickSort(a,j+1,right);
}
}
int
main(){
int
n,a[100000],i;
memset
(a,0,
sizeof
(a));
while
(cin>>n){
for
(i=0;i<n;i++){
cin>>a[i];
}
quickSort(a,0,(n-1));
for
(i=0;i<n;i++){
cout<<a[i]<<endl;
}
}
return
0;
}
/**************************************************************
Problem: 2932
User: morizunzhu
Language: C++
Result: 正确
Time:4 ms
Memory:2288 kb
****************************************************************/