落谷P1177
利用快速排序算法将读入的 N个数从小到大排序后输出。
输入格式
第 1 行为一个正整数 N,第 2 行包含 N 个空格隔开的正整数 ai,为你需要进行排序的数,数据保证了 ai 不超过 10^9。
输出格式
将给定的 N 个数从小到大输出,数之间空格隔开,行末换行且无空格。
输入输出样例
输入 #1
5
4 2 4 5 1
输出 #1
1 2 4 4 5
代码如下
#include <stdio.h>
int a[100001], n;
void f(int left, int right);//快速排序函数
int main() {
int i, j, t;
scanf("%d", &n);
for (i = 1; i <= n; i++)
scanf("%d", &a[i]);
f(1, n);
for (i = 1; i <= n; i++)
printf("%d ", a[i]);
return 0;
}
void f(int left, int right){
int i, j, t, temp;
if (left > right)
return;
temp = a[left];
i = left;
j = right;
while (i != j)
{
while (a[j] >= temp && i < j)
j--;
while (a[i] <= temp && i < j)
i++;
if (i < j)
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
a[left] = a[i];
a[i] = temp;
f(left, i - 1);
f(i + 1, right);
}