冒泡排序
算法描述:比较相邻的元素,如果第一个比第二个大,就相互交换,对每一对相邻的元素做相同的工作,第一次排序使最大的元素移动到最右端;进行第二次排序,同样的步骤使次大的元素移动到n-1的位置上;重复上述步骤,直到排序完成。
时间复杂度:O(n^2) (这里说的都是平均情况,待排序列近似有序时,冒泡排序的时间复杂度能达到O(n))
空间复杂度:O(1)
稳定性:稳定
class Solution {
public:
vector<int> BubbleSort(vector<int>& arr) { //冒泡排序
int n = arr.size();
for(int i=1; i<n; ++i){ //排序n-1次
for(int j=0; j<n-i; ++j){ //每次比较n-i次
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
};