七大排序——冒泡排序
Posted 唐老湿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了七大排序——冒泡排序相关的知识,希望对你有一定的参考价值。
排序算法是面试中最常考的内容,而冒泡排序则是其中最基础的部分。
两两相邻
不停比较
不停交换
从第一个数开始,依次与自己的后一个数相比较,满足交换条件(大于或者等于)则交换,依次类推。把极值(最大或者最小)放到最后(或最前)去。
循环n次
有几个数就比较多少轮
两两比较
当前的数与下一个数比较
两两交换
满足条件则交换位置
排序结果
为什么有
两层循环嵌套
第一层
决定排序轮数
第二层
用于一轮之中的两两比较
![七大排序——冒泡排序](https://image.cha138.com/20210407/9364e6af5ff04738a1ce02f34d8f94d8.jpg)
为什么要Length-1-i
减 1 的原因
前一个和后一个比
也就是第 j 个和第 j+1 个比
遍历到最后一个会报错
所以减 1
减 i 的原因
i 是轮次数
每进行一轮就会把一个极值放在最后去
如图中黄色的数字表示该轮极值
所以最后经过 i 轮后
倒数第 i 个数是不需要进行比较
它已经是极值了
![七大排序——冒泡排序](https://image.cha138.com/20210407/9364e6af5ff04738a1ce02f34d8f94d8.jpg)
如何降序排列
升序(从小到大)
降序(从大到小)
具体是哪种排序
关键点就是条件表达式
如果是大于(>)
(从头到尾遍历时)
意思就是把大的往后放
结果就是升序排列
如果是小于(<)
(从头到尾遍历时)
意思就是把小的往后放
结果就是降序排列
上面的冒泡排序,是从第一个开始,依次往后两两比较的,冒泡排序没有固定的写法,你可以从前往后比,也可以从后往前比。
从后往前比
红框处为修改过的代码
j = array.Length - 1
表示从最后一个元素开始
j > i
极值会往前放
和之前Length - 1 - i的原理一样
--j
表示从后往前遍历
j - 1表示
当前位置和前一个位置比较
为何要优化
如果对原数组进行升序排列
第一轮过后就已经是最后结果了
但是程序还是会继续把后几轮比完
做一系列无用功
所以要优化
通过加入一个bool标识
达到优化目标
如果一轮排序结束后
发现没有任何值进行交换
那说明已经是最终结果了
则直接停止排序
基本原理
两两相邻
不停比较
不停交换
套路写法
两层循环
一层轮数
一层比较
两值比较
满足交换
注意事项
从头遍历
从尾遍历
如何优化
加入bool
![七大排序——冒泡排序](https://image.cha138.com/20210407/9364e6af5ff04738a1ce02f34d8f94d8.jpg)
关注
唐老湿
获取更多干货内容
end
以上是关于七大排序——冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章