Java冒泡排序算法思路细讲

1. 什么是冒泡排序

1.1 算法了解

难度定位:属于计算机领域的初级算法,对初学者来说,可能感觉思路上比较饶。
名字由来:液体气泡从深向浅冒泡时,气泡会由小到大变化。在这里形象地指数值从小到大的排序算法。

1.2 算法思路

  1. 可以脑补下这个场景:体育课站队时,老师让一个随机排列的队列,按个子从低到高的排序过程。
  2. 将思维类比过来就是,先遍历要排序的元素,依次比较两个相邻的元素,若前者比后者大就交换位置。直到排序完成。

1.3 算法思路图解

图1:一个随机站位的队列
第1轮
图2:两两比较,前者比后者大就交换位置,这样一轮下来,各自最高的在最后
第2轮
图3:按照图2的思路,比较到2号即可,这样一轮下来,队列如下
第3轮
图4:剩下0号和1号,比较后,排序完成
第4轮

2.冒泡排序思路拆分

  1. 先会将最大值对应的元素放大最后,思路:遍历并判断是否需要交换2个变量的值,代码如下(Java):
 //定义一个数组
 int[] arr = {8,4,0,1,7,3,5,2};
 //将数组中的最大的元素放在最后的位置
 for(int i=0;i<arr.length-1;i++){
       if(arr[i]>arr[i+1]){
           int temp = arr[i];
           arr[i] = arr[i+1];
           arr[i+1] = temp;
       }
 }
  1. 再将第2大的元素放到对应的位置(注意和上次排序代码的变化)
 //将数组中的第2大的元素放在数组对应的位置
 for(int i=0;i<arr.length-2;i++){
       if(arr[i]>arr[i+1]){
           int temp = arr[i];
           arr[i] = arr[i+1];
           arr[i+1] = temp;
       }
 }
  1. …以此类推,其实,不断的将对应的数方法对应的位置,最后排序完成。可以将前面用到的循环改成for循环的嵌套。
for(int k=1;k<=arr.length-1;k++){
	for(int i=0;i<arr.length-k;i++){
		if(arr[i]>arr[i+1]){
			int temp = arr[i];
			arr[i] = arr[i+1];
			arr[i+1] = temp;
         }
    }
}

3.此算法可以优化,初学者先到这里即可…

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值