• 忘掉天地
  • 仿佛也想不起自己
  • 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2020-05-08 06:52 Aet 隐藏边栏 |   抢沙发  12 
文章评分 3 次,平均分 5.0

简述

冒泡排序通过反复遍历要排序的列表,比较每对相邻项,并以升序或降序的方式交换它们。重复操作列表,知道不需要交换为止。

复杂度

名称 最好 平均 最差 空间 稳定性
冒泡排序 n n2 n2 1

理解

  1. 冒泡排序,有n个数字,就要进行n次大循环
    1. 每次大循环,会找到所有数里面的最大或最小的数并放到正确的位置上
  2. 大循环里面小循环,本质上就是从下标0到当前未处理完成的最大下标之间进行循环,任务是找到最大或最小的目标,当找到了,当前未处理完成的最大下标的值就会相应缩小
  3. length-i-1 的本质应该是length-1-i
    1. length-1代表的是一组待处理数组的最大下标
    2. 这个最大下标之所以要-i,是因为完成了i次大循环,代表着有i个数字已经位于正确的位置,它不需要再被处理

初步实现

优化版1.0

经过一定次数的排序,数组可能已经处于完成排序的状态,但是,冒泡排序的流程还没走完,所以它还会继续排序,直到走完流程。

优化版2.0

存在一种情况,数组在排序之前,有部分区间就是有序的序列。针对这种现象优化。

鸡尾酒排序

简述

鸡尾酒排序,是基于冒泡排序的一种升级排序法。

区别

  • 冒泡排序
    • 每一轮都是从左到右来比较元素,进行单向的位置交换的。
  • 鸡尾酒排序
    • 每一轮的元素比较和交换过程都是双向的。

实现

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2024-08-10
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享