前端之家收集整理的这篇文章主要介绍了
快排代码 《数据结构》,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
- #include <stdio.h>
-
- /* C:
- * 参照《数据结构》(C语言版)
- * 调用:quicksort-->qsort-->partitions
- * 原理,通过一趟扫描将要排序的数据分割成独立的两部分,* 其中一部分的所有数据都比另外一部分的所有数据都要小,* 然后再按此方法对这两部分数据分别进行快速排序,* 整个排序过程可以递归进行,以此达到整个数据变成有序序列
- */
-
- /*
- * arry : 待排数组
- */
- int partitions(int arry[],int low,int high)
- {
- int pivotkey=arry[low];//枢纽数,以a[low]为
-
- while(low < high)
- {
- while(low < high && arry[high] >= pivotkey) --high;//先high前移直到小于枢纽
- arry[low]=arry[high];
-
- while(low < high && arry[low] <= pivotkey) ++low;//low后移直到大于枢纽
- arry[high]=arry[low];
- }
- //arry[low] = arry[0];
-
- arry[low]=pivotkey;
- return low;
- }
-
- void qsort(int arry[],int high)
- {
- int pivottag;
-
- if(low<high)
- { //递归调用
-
- pivottag=partitions(arry,low,high);
- qsort(arry,pivottag-1);
- qsort(arry,pivottag+1,high);
- }
- }
-
- //arry :待排数组 n:排序数目
- //e.g. quicksort(arry,10);
- void quicksort(int arry[],int n)
- {
- qsort(arry,n-1);
- }
-
- int main (int argc,char* argv[])
- {
- int i = 0;
- int arry[10] = {9,8,7,6,5,4,3,2,1,0};
- for(i=0;i<10;i++)printf("%d\t",arry[i]);
- printf("\n");
- quicksort(arry,10);
- for(i=0;i<10;i++)printf("%d\t",arry[i]);
- printf("\n");
- }