A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 似神仙 中级黑马   /  2015-11-20 23:15  /  661 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. #include <stdio.h>

  2. int partions(int l[],int low,int high)
  3. {
  4. int prvotkey=l[low];
  5. l[0]=l[low];
  6. while (low<high)
  7. {
  8. while (low<high&&l[high]>=prvotkey)
  9. --high;
  10. l[low]=l[high];
  11. while (low<high&&l[low]<=prvotkey)
  12. ++low;
  13. l[high]=l[low];
  14. }

  15. l[low]=l[0];
  16. return low;
  17. }

  18. void qsort(int l[],int low,int high)
  19. {
  20. int prvotloc;
  21. if(low<high)
  22. {
  23. prvotloc=partions(l,low,high);    //将第一次排序的结果作为枢轴
  24. qsort(l,low,prvotloc-1); //递归调用排序 由low 到prvotloc-1
  25. qsort(l,prvotloc+1,high); //递归调用排序 由 prvotloc+1到 high

  26. }
  27. }

  28. void quicksort(int l[],int n)
  29. {
  30. qsort(l,1,n); //第一个作为枢轴 ,从第一个排到第n个
  31. }

  32. void main()
  33. {
  34. int a[11]={0,2,32,43,23,45,36,57,14,27,39};

  35. for (int b=1;b<11;b++)
  36. printf("%3d",a[b]);

  37. printf("\n");
  38. quicksort(a,11);

  39. for(int c=1;c<11;c++)
  40. printf("%3d",a[c]);

  41. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马