冒泡排序理论
冒泡排序:一个数组 a 比较相邻两个数 a [ i ],a [ i + 1] 的大小,如果 a [ i ] > a [ i + 1 ],则将交换两个位置的值。依次类推,每轮循环将会把最大的值推向数组末尾。虽然该排序基于交换,但是由于每次交换只涉及相邻两个数交换,故该排序是稳定的。
此外:
- 时间复杂度为O(n^ 2)
- 空间复杂度为O(1)
- 为了减少比较次数,通常额外声明一个标记变量,去标记,在一趟循环中是否有进行交换。如若没有交换,则表示,数组有序,可以退出循环。
冒泡排序代码实现
// 冒泡排序
void bubbleSort(int *nums, int size){
for(int i = size - 1; i >= 0 ; i--){
bool swap = false;// 标记变量
for(int j = 0; j < i; j++){
if(nums[j]>nums[j+1]){
int tmp = nums[j];nums[j] = nums[j+1];nums[j+1] = tmp;
swap = true;
}
}
if(!swap) break;
}
}
1068

被折叠的 条评论
为什么被折叠?



