快排代码 《数据结构》

前端之家收集整理的这篇文章主要介绍了快排代码 《数据结构》前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. #include <stdio.h>
  2.  
  3. /* C:
  4. * 参照《数据结构》(C语言版)
  5. * 调用:quicksort-->qsort-->partitions
  6. * 原理,通过一趟扫描将要排序的数据分割成独立的两部分,* 其中一部分的所有数据都比另外一部分的所有数据都要小,* 然后再按此方法对这两部分数据分别进行快速排序,* 整个排序过程可以递归进行,以此达到整个数据变成有序序列
  7. */
  8.  
  9. /*
  10. * arry : 待排数组
  11. */
  12. int partitions(int arry[],int low,int high)
  13. {
  14. int pivotkey=arry[low];//枢纽数,以a[low]为
  15. while(low < high)
  16. {
  17. while(low < high && arry[high] >= pivotkey) --high;//先high前移直到小于枢纽
  18. arry[low]=arry[high];
  19. while(low < high && arry[low] <= pivotkey) ++low;//low后移直到大于枢纽
  20. arry[high]=arry[low];
  21. }
  22. //arry[low] = arry[0];
  23. arry[low]=pivotkey;
  24. return low;
  25. }
  26.  
  27. void qsort(int arry[],int high)
  28. {
  29. int pivottag;
  30. if(low<high)
  31. { //递归调用
  32. pivottag=partitions(arry,low,high);
  33. qsort(arry,pivottag-1);
  34. qsort(arry,pivottag+1,high);
  35. }
  36. }
  37.  
  38. //arry :待排数组 n:排序数目
  39. //e.g. quicksort(arry,10);
  40. void quicksort(int arry[],int n)
  41. {
  42. qsort(arry,n-1);
  43. }
  44.  
  45. int main (int argc,char* argv[])
  46. {
  47. int i = 0;
  48. int arry[10] = {9,8,7,6,5,4,3,2,1,0};
  49. for(i=0;i<10;i++)printf("%d\t",arry[i]);
  50. printf("\n");
  51. quicksort(arry,10);
  52. for(i=0;i<10;i++)printf("%d\t",arry[i]);
  53. printf("\n");
  54. }

猜你在找的数据结构相关文章