数据结构实验之排序一:一趟快排
Time Limit: 1000MS
Memory Limit: 65536KB
Problem Description
给定N个长整型范围内的整数,要求输出以给定数据中第一个数为枢轴进行一趟快速排序之后的结果。
Input
连续输入多组数据,每组输入数据第一行给出正整数N(N < = 10^5),随后给出N个长整型范围内的整数,数字间以空格分隔。
Output
输出一趟快速排序后的结果,数字间以一个空格间隔,行末不得有多余空格。
Example Input
8 49 38 65 97 76 13 27 49
Example Output
27 38 13 49 76 97 65 49
Hint
Author
xam
#include <stdio.h>
#include <stdlib.h>
long long a[100000];
int main()
{
int n,i,j;
long long x;
while(scanf("%d",&n) != EOF)
{
for(i = 0;i <n;i++)
{
scanf("%lld",&a[i]);
}
i = 0;j = n-1;
x = a[0];
while(i < j)
{
while(i <j&&a[j] >= x)
j--;
a[i] = a[j];
while(i <j&&a[i] <= x)
i++;
a[j] = a[i];
}
a[i] = x;
for(i = 0;i < n;i++)
{
printf("%lld%c",a[i],i==n-1?'\n':' ');
}
}
return 0;
}
本实践介绍了一趟快速排序算法的实现过程,通过选取数组中的第一个元素作为枢轴,完成数组的初步划分。代码示例使用 C 语言实现,并提供了一个可以处理多组输入数据的完整程序。
9652

被折叠的 条评论
为什么被折叠?



