冒泡排序详解

冒泡排序理论

        冒泡排序:一个数组 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;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值