细说冒泡排序及其五种优化算法

本文详细介绍了冒泡排序的基本原理及其实现,并针对其效率问题提出了四种不同的优化方案,包括外层优化、内外层循环优化、双向冒泡及复合优化策略,通过实验对比了各方法的性能。

​01 冒泡排序

      冒泡排序算法思想简单来说:在内层一次遍历中,arr[j] 与 arr[j-1] 进行比较,如arr[j-1] < arr[j], 不改变,反之互换值,保证arr[j]存储着 0~j-1中的最大值,随一次遍历当前数组最大值也下沉至末尾,经过n-1次外层循环,可使n-1个元素下沉,最后一个元素位置确定,排序完成。

       举个例子方便理解,

        例1:例如原数组为:0,34,66,12,100,98

进入第一次冒泡排序:

       从下标1的元素(即34)排起:34与0比较,34大,数组仍为0,34,66,12,100,98

       下标2的元素(即66):66与34比较,66大,数组仍为0,34,66,12,100,98

       下标3的元素(即12):12与66比较,12小,互换位置,数组变换为0, 34, 12, 66, 100, 98

       下标4的元素(即100):100与66比较,100大,数组仍为0, 34, 12, 66, 100, 98

       下标5的元素(即98):98与100比较,98小,则互换位置,数组变换为0, 34, 12, 66, 98,100

       查看规律,排序过程中,下标 j的值在交换后,是0 ~ j-1中最大的,利用的是不等号具有传递性;排序完成后,将100沉底,再进行新的循环时,只需排序0, 34, 12, 66, 98即可,最大值沉底。

具体实现代码如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值