栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java

文章目录
  • 前言
  • 一、冒泡排序原理
  • 二、代码实现
    • 1.基础实现
    • 2.代码优化
  • 总结




前言

我之前发过一个关于冒泡排序(用C语言实现)的文章,但是感觉没有循序渐进,对于编程入门的小白不是很友好,所以我打算再发一篇关于冒泡排序的文章。




一、冒泡排序原理

对于编程入门的小伙伴来说,冒泡排序应该是最熟悉的排序方法了,那么让我们回顾一下冒泡排序的原理。

首先给出一个数组 int arr[4] 如下

8352

比较第一个元素与第二个元素,如果arr[0]>arr[1]则交换arr[0]与arr[1],然后再让第二个元素与第三个元素比较,一直这么比较到最后一个元素,这样就可以让最大的元素排在数组的最末端位置。

3528

可以将数组的末端想象成水面,大元素相当于大气泡,最大的气泡会最先浮出水面(挺形象的哈)

比完一次后,最大的元素已经排好了,接下来再次重复上述比较,就可以让第二大的元素排好。一直这么比,数组就排好了。

3258

当然,这个思路有许多优化空间,但大体思路就是如此。



二、代码实现

1.基础实现
import java.util.Arrays;

public class work_1 {
    public static void main(String[] args) {
        //要修改该数组直接在大括号里该元素就可以
        int arr[]=new int[]{6,3,8,9,1,3,4,2,5,9,0,2,8};
        //arr.length代表该数组有多少元素,在这里代表13

        System.out.println(Arrays.toString(arr));//以字符形式打印数组

        //以下是冒泡排序基础写法
        //外层循环控制循环次数
        for (int i = 0; i < arr.length; i++) {
            //内层循环控制下标
            for (int j = 0; j < arr.length-1; j++) {
                //要使arr[i+1]不越界,则当j+1==arr.length时,该循环进行最后一次,故jarr[j+1]){
                    //交换三连
                    int tmp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=tmp;
                }
            }
        }

        System.out.println(Arrays.toString(arr));//以字符形式打印数组

    }
}



2.代码优化
import java.util.Arrays;

public class work_1 {
    public static void main(String[] args) {
        int arr[]=new int[]{6,3,8,9,1,3,4,2,5,9,0,2,8};
        System.out.println(Arrays.toString(arr));

        //以下是冒泡排序优化写法
        //当循环进行到最后一次时,只剩下了最后一个元素排在最前面,相当于已经排好了,故可以省略一次比较,即iarr[j+1]){
                    int tmp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=tmp;
                    flage=1;//如果存在元素交换,则代表该数组无序,仍然需要排序
                }
            }
            if(flage==0){
                //如果内层循环走完了一次都没有元素交换的话,说明该数组已经有序,无需排列,故跳出循环
                break;
            }else{
                //若flage!=0,则该数组仍然需要排序,将flage恢复到默认值
                flage=1;
            }
        }

        System.out.println(Arrays.toString(arr));

    }
}


 



总结

冒泡排序不难,下去手敲一遍一定可以理解的。


备注:

能看到这里的小伙伴,一定是认真看完了的,感谢大家,如果可以的话,能不能帮我把点赞弄成双数?只有我一个人点赞实在是有点冷清........

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/327482.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号