[算法系列之五]快速排序

ゝ一世哀愁。 2023-05-31 15:23 63阅读 0赞

【分析】

20140503142205281

【伪代码】

20140503142214281

20140503142234312

【思路图】

Center

【运行过程】

20140503142651781

20140503142704375

【代码】

  1. /*********************************
  2. * 日期:2014-04-01
  3. * 作者:SJF0115
  4. * 题目:快速排序
  5. **********************************/
  6. #include <iostream>
  7. #include <stdio.h>
  8. using namespace std;
  9. //对子数组array[p...r]就地重排
  10. int Partition(int array[],int p,int r){
  11. int j,temp;
  12. //定义哨兵
  13. int x = array[r];
  14. //i为小于哨兵元素的最后一个元素下标
  15. int i = p - 1;
  16. //j为待排序元素的第一个元素
  17. for(j = p;j < r;j++){
  18. //跟哨兵比较
  19. if(array[j] < x){
  20. i++;
  21. //交换array[i] array[j]
  22. temp = array[j];
  23. array[j] = array[i];
  24. array[i] = temp;
  25. }
  26. }
  27. //交换array[i+1](大于哨兵元素的第一个元素) array[r]
  28. temp = array[i+1];
  29. array[i+1] = array[r];
  30. array[r] = temp;
  31. //返回分割下标
  32. return i + 1;
  33. }
  34. //快排
  35. void QuickSort(int array[],int p,int r){
  36. if(p >= r || array == NULL){
  37. return;
  38. }
  39. int index = Partition(array,p,r);
  40. QuickSort(array,p,index-1);
  41. QuickSort(array,index+1,r);
  42. }
  43. int main()
  44. {
  45. int array[] = {2,8,7,1,3,5,6,4};
  46. QuickSort(array,0,7);
  47. for(int i = 0;i <= 7;i++){
  48. printf("%d\n",array[i]);
  49. }
  50. }

本文原文地址:https://blog.csdn.net/SunnyYoona/article/details/24916745

发表评论

表情:
评论列表 (有 0 条评论,63人围观)

还没有评论,来说两句吧...

相关阅读

    相关 排序算法快速排序

    同样的先上这张图  ![Center][] 下面分析交换排序之快速排序: 快速排序的思想是先选择一个基准元素(一般取第一个元素),然后对剩下的元素作两端遍历,左边找

    相关 排序算法快速排序

    快速排序的基本思想是:通过一趟排序将要排序的[数据分割][Link 1]成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行

    相关 排序算法快速排序

    快速排序是一种高效的排序算法,它采用分而治之的思想,把大的拆分成小的,小的再拆分为更小的。 其原理是:对于给定的数组,通过一趟排序之后,将原序列分为两部分,其中前一部分的所