数据结构实验之排序一:一趟快排
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
#include <stdio.h> #include <string.h> const int maxn = 1e5+7; int main() { int a[maxn]; int i,j; int n,x; while(~scanf("%d", &n)) { for( i = 0; i < n; i++) { scanf("%d", &a[i]); } i = 0,j = n-1; x = a[i]; while( i < j) { while( i < j&& a[j] >=x) j--; if(i<j) { a[i] = a[j]; i++; } while( i < j&& a[i] < x) i++; if( i < j) { a[j] = a[i];j--; } } a[i] = x; for(i=0;i<n-1;i++) { printf("%d ",a[i]); } printf("%d\n",a[i]); } }
一趟快速排序详解
本文介绍了一趟快速排序的实现过程,通过给定一组长整型范围内的整数,使用第一个数作为枢轴进行排序,并提供了具体的C语言实现代码。
9652

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



