博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
冒泡排序逐步详解相关笔记(一)
阅读量:4963 次
发布时间:2019-06-12

本文共 810 字,大约阅读时间需要 2 分钟。

1.冒泡排序实际上是数组中相邻的两个元素互相比较,满足条件之后就会互换位置
◆ 需要双重for循环
◆比较的轮数 默认是数组元素的个数减1
◆每轮比较的次数 默认是数组元素的个数减1
◆满足了相邻的两个元素互相比较的条件之后,就会互换这两个元素的位置,从而达到大的值或最小的值不断的往前面放或者往后面放的目的
◆随着每轮的比较,最大的或最小的会被放在最前面或最后面,那么就可以少比较几次,因为那几次没有意义,那多余的几次等于已经比较了多少轮的轮数
◆这个过程中 可能会出现 提前排序完毕的情况发生,那么可以在外循环中加一个判断,只要本轮内循环中没有发生数组元素位置交换的情况,那么直接结束外循环。

◆在外循环中定义一个标识,只要内循环中的判断条件达成了,那么就改变这个标识的值,说明有数组元素的位置发生了改变,内循环的下面设置判断标识是否是默认值,如果是默认值那么久说明内循环中的判断条件在本轮中一次都没有达成,本轮数组元素的位置没有任何变化,那么下一轮也不会发生任何变化,所以就可以直接外循环了。【开闭思想】定义标识,判断标识,达到即时的结束循环的目的。

2.说了那么多了,实际上冒泡排序就是一种排序的算法,其实并不难

◆基础版:不断的进行比较,大的往后面放,小的往前面放,但是每轮都会比较相同的次数,所以显得很费劲,需要优化。

◆基础进阶版:其实每轮排序做的事情就是把小的值放到前面,每轮比较都会把最大的那个值放到最后面,那么就可以省略掉每轮比较的次数了,省略的次数就是你比较的轮数。

◆基础完整版:其实每轮排序做的事情就是把最大的数放到最后面,小的值不断的往前面放,所以既可以减少每轮比较的次数,实际上,但是某一轮比较的时候,没有一个元素更换了位置,那么说明,排序已经完成了,这时候就可以不需要比较下去了。

转载于:https://www.cnblogs.com/jwlLWJ2018/p/9247747.html

你可能感兴趣的文章
【codeforces 731E】Funny Game
查看>>
【codeforces 794B】Cutting Carrot
查看>>
【hiho一下 第145周】智力竞赛
查看>>
VS 输出窗口输出信息
查看>>
实现UniqueAttribute唯一性约束,sqlunique约束[转]
查看>>
【u026】房间最短路问题
查看>>
高德地图 定位等
查看>>
wenbao与cmd
查看>>
React使用的思考总结
查看>>
Django session/cookie
查看>>
Android实现微博分享及其注意事项
查看>>
将Mongo装为Windows的服务
查看>>
浅谈ThreaLocal
查看>>
4.3大图轮播学习
查看>>
FPGA 开发流程 --> 仿真与modelsim使用
查看>>
Beta版本冲刺第三天
查看>>
iframe的应用
查看>>
python在读取文件时出现 'gbk' codec can't decode byte 0x89 in position 68: illegal multibyte sequence...
查看>>
Java多线程之同步集合和并发集合
查看>>
Apache 80端口被占用
查看>>