描述:
给定一个数列,用快速排序算法把它排成升序。
输入:
第一行是一个整数n,表示要排序的数的个数;下面一行是用空格隔开的n个整数。
输出:
输出排序后的数列,每个数字占一行。
输入样例:
5 3 2 1 4 5
输出样例:
1 2 3 4 5
#include <iostream>
using namespace std;
int a[10000];
void QuickSort(int a[], int l, int r)
{
if(l < r) //递归边界
{
int i = l, j = r;
int temp = a[l]; //选为标杆
while(i < j)
{
//从右向左,找到第一个比temp小的数
while(i < j && a[j] >= temp)
j--;
if(i < j)
a[i++] = a[j];
//从左向右,找到第一个比temp大的数
while(i < j && a[i] < temp)
i++;
if(i < j)
a[j--] = a[i];
}
//退出循环,i等于j
a[i] = temp;
QuickSort(a, l, i-1); //递归标杆左边
QuickSort(a, i+1, r); //递归标杆右边
}
}
int main()
{
int n;
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;
}