问题 C: 快速排序 qsort [2*]
时间限制: 1 Sec 内存限制: 128 MB题目描述
输入n个整数,用快速排序的方法进行排序
Input
第一行数字n 代表接下来有n个整数
接下来n行,每行一个整数
Output
Output
升序输出排序结果
每行一个数据
Sample Input
5 12 18 14 13 16
Sample Output
12 13 14 16 18
Hint
n<=5000每个数据<=5000
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[5000],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: 2843
User: morizunzhu
Language: C++
Result: 正确
Time:4 ms
Memory:2020 kb
****************************************************************/