Java 八大排序之冒泡排序详解
分析冒泡排序
数组[24,69,80,57,13]
第1轮排序:目标把最大数放在最后
第1 次比较:[24,69,80,57,13]
第2 次比较:[24,69,80,57,13]
第3 次比较:[24,69,57,80,13]
第4 次比较:[24,69,57,13,80]
第2轮排序:目标把第二大数放在倒数第二位置
第1次比较:[24,69,57,13,80]
第2次比较:[24,57,69,13,80]
第3次比较:[24,57,13,69,80]
第3轮排序:目标把第三大数放在倒数第三位置
第1次比较:[24,57,13,69,80]
第2次比较:[24,13,57,69,80]
第4轮排序:目标把第四大数放在倒数第四位置
第1次比较:[13,24,57,69,80]
思路分析
建议:边写边运行调试(实力体现化繁为简,先死后活)
化繁为简
数组[24,69,80,57,13]
1. 首先依次输出如下操作:
第1轮排序:目标把最大数放在最后
第1 次比较:[24,69,80,57,13]
第2 次比较:[24,69,80,57,13]
第3 次比较:[24,69,57,80,13]
第4 次比较:[24,69,57,13,80]
第2轮排序:目标把第二大数放在倒数第二位置
第1次比较:[24,69,57,13,80]
第2次比较:[24,57,69,13,80]
第3次比较:[24,57,13,69,80]
第3轮排序:目标把第三大数放在倒数第三位置
第1次比较:[24,57,13,69,80]
第2次比较:[24,13,57,69,80]
第4轮排序:目标把第四大数放在倒数第四位置
第1次比较:[13,24,57,69,80]
2. 将多轮循环使用外层循环包括起来即可
for (byte i = 0; i < arr.length - 1; i++) 外层循环控制
for (byte j = 0; j < arr.length - 1 - i; j++) 用于控制每层都交换次数以及对应的位置
先死后活
1. 4-> arr.length - 1
2. 可采取随机赋值的方式
优化
若遇到一组顺序排的数组,不需要在进行排序,我们可以直接break,此操作在后面的算法中体现
走代码
public class BubbleSort
{
public