解题思路
冒泡排序是将相邻的值对比,如果 前面的值 > 后面的值,则交换两个值。
时间复杂度
若有n个数,相邻两个对比,操作n次,总共有n次循环,所以复杂度为o(n^2)
(图转自菜鸟教程)
c++实现
#include <iostream>
using namespace std;
#include <vector>
template<class T> vector<T> bubble_sort(vector<T>&);
int main() {
vector<int> a = {1,3,2,5,4,6,5,200};
vector<int> res = bubble_sort<int> (a);
for(int i=0; i<res.size()-1;i++)
cout << res[i] << ',' ;
return 0;
}
template<class T>
vector<T> bubble_sort(vector<T>& nums){
int i=nums.size()-1;
while(i>=0) { //这个循环只是确定循环次数
for (int j = 1; j < nums.size()-1; j++) {
if(nums[j-1] > nums[j])
swap(nums[j-1],nums[j]);
}
i--;
}
return nums;
}
您要是觉得本篇文章对您有帮助,不妨点个赞吧!