当前位置:   article > 正文

C++实现快速排序(非递归版)_快速排序算法的非递归算法c++

快速排序算法的非递归算法c++
  1. #include <iostream>
  2. #include<time.h>
  3. #define LEN 100
  4. using namespace std;
  5. int partition(int* a, int left, int right)
  6. {
  7. double x = a[right];
  8. int i = left-1, j = right;
  9. for (;;)
  10. {
  11. while(a[++i] < x) { }
  12. while(a[--j] > x) { if(j==left) break;}
  13. if(i < j)
  14. swap(a[i], a[j]);
  15. else break;
  16. }
  17. swap(a[i],a[right]);
  18. return i;
  19. }
  20. void quick(int* a, int left, int right)
  21. {
  22. stack<int> t;
  23. if(left<right)
  24. {
  25. int p = partition(a, left, right);
  26. if (p-1>left)
  27. {
  28. t.push(left);
  29. t.push(p-1);
  30. }
  31. if (p+1<right)
  32. {
  33. t.push(p+1);
  34. t.push(right);
  35. }
  36. while(!t.empty())
  37. {
  38. int r = t.top();
  39. t.pop();
  40. int l = t.top();
  41. t.pop();
  42. p = partition(a, l, r);
  43. if (p-1>l)
  44. {
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/423746
推荐阅读
相关标签
  

闽ICP备14008679号