冒泡排序
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。。冒泡排序还有一种优化算法,就是立一个 flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序。
(图片来自菜鸟教程冒泡排序)
复杂度稳定性
时间复杂度
最好情况是数据已经正序,最坏情况是数据反序
O
(
n
2
)
O(n^2)
O(n2)
空间复杂度
不包括原始数据存储过程,所以空间复杂度是 O ( 1 ) O(1) O(1)
稳定性
稳定
代码
class Solution {
public:
void bubbleSort(vector<int>&nums){
int i,j;
for(i=0;i<nums.size()-1;i++){
bool flag=false;
for(int j=nums.size()-1;j>i;j--){
if(nums[j-1]>nums[j]) {
swap(nums[j-1],nums[j]);
flag=true;
}
}
if(flag==false) return;
}
}
vector<int> sortArray(vector<int>& nums) {
bubbleSort(nums);
return nums;
}
};