快速排序 代码语言:c

快速排序 时限:1000ms 内存限制:10000K  总时限:3000ms

描述:

给定一个数列,用快速排序算法把它排成升序。

输入:

第一行是一个整数n,表示要排序的数的个数;下面一行是用空格隔开的n个整数。

输出:

输出排序后的数列,每个数字占一行。

输入样例:

5
3 2 1 4 5

输出样例:

1
2
3
4

5

代码:

#include<stdio.h> #include<stdlib.h> int *a; int Partition(int low,int high) { int temp; int pivotkey=a[low]; while(low<high) { while(low<high&&a[high]>=pivotkey) { --high; } temp=a[low]; a[low]=a[high]; a[high]=temp; while(low<high&&a[low]<=pivotkey) { low++; } temp=a[low]; a[low]=a[high]; a[high]=temp; } return low; } void QSort(int low,int high) { int pivotloc; if (low < high) { pivotloc = Partition(low, high); // 将L.r[low..high]一分为二 QSort(low, pivotloc-1); // 对低子表递归排序,pivotloc是枢轴位置 QSort(pivotloc+1, high); // 对高子表递归排序 } } int main() { int n,i; scanf("%d",&n); a=(int *)malloc((n+1)*sizeof(int)); for(i=1;i<=n;i++) { scanf("%d",&a[i]); } QSort(1,n); for(i=1;i<=n;i++) { printf("%d\n",a[i]); } return 0; }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzjxsx.html