每一次顺序便遍历,比较相邻的两个元素,交换。
void bubbleSort(vector<int>&v) {
int n = v.size();//元素个数
//外层j控制的是待排序区间的长度
for (int j = n;j > 1;j--) {
bool flag = 0;//提高效率,判断比较好了就结束
//内层i针对当前排序区间进行冒泡操作
for (int i = 1;i <j;i++) {
if (v[i] > v[i + 1]) { //比较
swap(v[i], v[i + 1]); //交换
flag = 1;
}
}
if (flag == 0) {
break;
}
}
}
时间复杂度:
最优情况下:O(n)(本身就是有序的,只进行一次排序,n-1次比较)
最差情况下:O(n2)
稳定性分析(大小相同的值顺序变不变):稳定