首页 > 解决方案 > 在冒泡排序中使用递归

问题描述

大家好,我开始学习数据结构和算法,并在学习了概念后自己实现了冒泡排序。以下是我根据自己的理解编写的代码,但问题是它只运行一个周期并且不会递归排序。

{ 5,1,4,2,8} 排序一次 -> {1,4,2,5,8,}

可能是什么问题?

vector<int> bubble_sort(vector<int> vec){
 int temp = 0;

 for(int i = 0; i < vec.size()-1; i++){    
      temp = vec.at(i+1);                    // holds the adjacent element.

// the following loop swaps the adjacent elements if the previous one is big
            if(vec.at(i) > vec.at(i+1)){
                      vec.at(i+1) = vec.at(i);
                      vec.at(i) = temp;
            }     
           temp = 0;
      }


 for(int i = 0; i < vec.size()-1; i++){         
        if(vec.at(i) > vec.at(i+1)){
            bubble_sort(vec);  
        }     
  }

return vec;
}

标签: c++algorithm

解决方案


您的函数vector<int>逐个复制一个向量,因此在第一次交换之后,只有这个副本被发送到递归排序。

只需添加&到您的函数参数:vector<int> bubble_sort(vector<int> &vec)它应该可以工作


推荐阅读