当前位置:   article > 正文

【c++数据结构】关于冒泡排序的两种改进方法_c语言问题 b: 【数据结构10-4】改进的冒泡排序

c语言问题 b: 【数据结构10-4】改进的冒泡排序

一种是检查前缀向量(左侧)是否已经是有序向量的冒泡排序。

  1. void bubblesort1(vector<int>& v,int lo,int hi){
  2. bool sorted =false;//初始化
  3. int i;
  4. while (!sorted){
  5. sorted = true;//假设有序
  6. i = lo;
  7. while (++i < hi){
  8. if (v[i - 1]>v[i]){
  9. swap(v[i - 1], v[i]);
  10. sorted = false;
  11. }
  12. }
  13. --hi;
  14. }
  15. }

一种是检查后缀向量(右侧)是否已经是有序向量的冒泡排序。

  1. void bubblesort2(vector<int>& v, int lo, int hi){
  2. while (lo<hi){
  3. int i = lo;
  4. int last = i;//最右侧逆序对初始化为[lo-1,lo]
  5. while (++i < hi){
  6. if (v[i - 1]>v[i]){
  7. swap(v[i - 1], v[i]);
  8. last = i;//更新最右侧逆序对位置记录
  9. }
  10. }
  11. hi=last;
  12. }
  13. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/824417
推荐阅读
相关标签
  

闽ICP备14008679号