冒泡排序图解

冒泡排序

题型:int[]array= {3,4,2,1}; 对这个数组进行排序
冒泡排序思路:
比喻:现在有四个数字气泡,气泡大小就是数字大小,我们知道,气泡都是小到大的。那么,怎么去排这个气泡呢?

1.我们可以用选择排序
链接: link.

2.冒泡排序
        2.1 我们将相邻两个相邻的气泡进行比较,大的放在右边,小的放在左边。通过不停调换,最右边即是最大的气泡。(得到第一个最大)
        2.2 通过我们的第一步,每一次得到一个最大的气泡,直到得到length-1个相对大气泡(因为每一次取得是当前的最大)
        2.3图解分析
第一次:
3 4 2 1–>(3和4比)3 4 2 1–>(4和2比)3 2 4 1–>(4和1比) 3 2 1 4(最大)
第二次:
3 2 1 4–>(3和2比)2 3 1 4–>(3和1比)2 1 3 4(最大)(j=length-i的原因)
第三次:
2 1 3 4–>(2和1比)1 2 3 4(完成排序)
3.上代码分析
int[]array= {3,4,2,1}; //创建任意一个数组
int length=array.length; //先得到数组长度
for(int i=1;i<length;i++) { //确定内循环次数,得到(多少个)最大              //请注意,我这里i=1,但i=0也可以,不过下一个for的控制语句就要跟着变
虽然这个for只是表示循环几次,但是为了下一个for使用,才没有随意定义
for(int j=0;j<length-i;j++) { //内循环里面比较次数
//内循环相邻比较次数,i和j产生关系,见图解分析
if(array[j]>array[j+1]) { //内循环相邻比较排序
int num=array[j+1]; //交换
array[j+1]=array[j];
array[j]=num;
}
}
}
for(int res:array) { //增强for循环
System.out.print(res+" "); //输出
}
4.得到
在这里插入图片描述
无论是选择排序还是冒泡排序,一定要理清思路,然后找到两个for循环里面i和j的控制条件和关系

对于双for循环,都是这个思路。可以一边尝试一边去理解。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值