冒泡排序算法比较简单,算法思想主要是双层循环,外层循环进行n-1趟排序,内层循环依次从左到右紧挨着的两个元素比较大小,内层循环的终止条件由外层循环的变量j控制。
注意:冒泡排序时间复杂度是O(n^2),空间复杂度为O(1),是稳定排序算法(排序前后相对位置不变)
下面实现代码:
#include <iostream>
#include <vector>
using namespace std;
class Sort {
public:
void bubble(vector<int>& nums) {
for (int j = nums.size() - 1; j > 0; --j) // 外层循环控制内层循环终止条件
for (int i = 0; i < j; ++i) // 内层循环每趟比较出一个最大值放“最后面”
if (nums[i] >= nums[i + 1]) // 前面比后面大则交换
std::swap(nums[i], nums[i + 1]);
}
};
int main()
{
vector<int> nums = { 2,0,1,6,8,10,5,99,87,333,2,0,1 };
Sort{}.bubble(nums);
for (const auto& it : nums)
cout << it << ",";
cout << endl;
return 1;
}
|