Java语言冒泡排序详解

Java语言冒泡排序详解基于很多同学在面试的过程中被问到一些基础的算法,导致整个面试过程不理想,而基础的算法和数据结构往往都是一些大公司任职的基本要求,这也严重影响拿offer的成功率。接下来的一段时间我将陆续对一些简单的基础的算法和数据结构进行详细说明。我将从排序算法说起,下面从冒泡排序开始说起。排序结果:数据从小到大。首先说一下冒泡排序的思想:每次比较从第一个数据开始,数据两两比较,如果左边数据比右边数据大,则交换左右

大家好,又见面了,我是你们的朋友全栈君。

基于很多同学在面试的过程中被问到一些基础的算法,导致整个面试过程不理想,而基础的算法和数据结构往往都是一些大公司任职的基本要求,这也严重影响拿offer的成功率。接下来的一段时间我将陆续对一些简单的基础的算法和数据结构进行详细说明。我将从排序算法说起,下面从冒泡排序开始说起。

排序结果:数据从小到大。

首先说一下冒泡排序的思想:每次比较从第一个数据开始,数据两两比较,如果左边数据比右边数据大,则交换左右数据。继续比较。一次比较结束出现一个最大值在最后一个位置。

思想就是代码的体现,掌握思想写代码66的。

我以5个数据为例集合冒泡排序的思想进行图解说明。
数据为 8、5 、2 、6 、1。
第一次比较过程如下:
这里写图片描述

简单说明:
每次比较从第一个数据开始,也就是8开始。数据两两比较,也就是8和5进行比较。如果左边数据比右边数据大,则交换左右数据,也就是8比5大,8和5的位置交换。继续比较,也就是交换位置后,8继续和后面的数据比较。当最大值8出现在了最后一个位置时,第一次比较结束。当下一次比较,8已经是最大值就没必要参与比较。

第二次比较过程如下:
这里写图片描述

简单说明:第二次比较过程和第一次比较过程是一致的,第二次比较最大值6出现在最后一个位置。下一次比较,最大值6不参与比较。

第三次比较过程如下:
这里写图片描述
简单说明:第三次比较最大值5出现最后一个位置,下次比较,5不参与比较。

第四次比较过程如下:
这里写图片描述

简单说明:第四次比较最大值2出现最后一个位置。至此,所有数据排序过程结束。

文字与图理解完毕,直接上代码演示。

    public static void main(String[] args) {
        // 定义10个数据的数组
        int data[] = new int[10];
        // 初始化数组
        initData(data);
        // 打印排序前数组数据
        print(data);
        // 冒泡排序
        bubbleSort(data);
        // 打印排序后的数组数据
        print(data);
    }

    /** * 冒泡排序:每次比较从第一个数据开始,数据两两比较,如果左边数据比右边数据大,则交换左右数据。继续比较。一次比较结束出现一个最大值在最后一个位置。 * * @param data */
    private static void bubbleSort(int[] data) {

        // 比较的是次数
        for (int i = data.length - 1; i > 0; i--) {
            // 每次比较冒泡的过程(查找最大值的过程),每次从第一个数据开始,因此j每次都是从零开始。
            //从图解中可以看出,随着比较次数的增多,冒泡的过程逐渐减少,因此i的值是随着比较的次数增多而减少。
            //反推i的初始值为最大,又由于5个数据比较次数为4次,可得出i的初始值为数据个数-1。
            for (int j = 0; j < i; j++) {

                // 数据交换
                if (data[j] > data[j + 1]) {
                    // 交换
                    int temp = data[j];
                    data[j] = data[j + 1];
                    data[j + 1] = temp;
                }

            }
        }
    }

    // 该方法随机生成1-100的随机数
    private static void initData(int[] data) {

        for (int i = 0; i < data.length; i++) {

            data[i] = (int) Math.ceil(Math.random() * 100);
        }

    }

    // 该方法用于打印数组数据
    private static void print(int[] data) {

        System.out.print("[");
        for (int i = 0; i < data.length; i++) {

            if (i != data.length - 1) {
                System.out.print(data[i] + ",");
            } else {
                System.out.println(data[i] + "]");
            }
        }

    }

下一篇:选择排序详解,敬请期待…………..

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151729.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月20日 下午11:46
下一篇 2022年6月20日 下午11:46


相关推荐

  • 解决MyQL数据库中1045错误的方法——Windows系统「建议收藏」

    解决MyQL数据库中1045错误的方法——Windows系统「建议收藏」在各种各样的适用场所,MySQL会出现各种各样的问题,经过足足半年的长跑,我的数据库终于修复了Bug,可以重新使用了。数据库出问题,那可能是家常便饭了。经过这足足半年的煎熬,我决定在以后的日子里,记录下我在使用数据库时遇到的色彩缤纷的问题,以及这些问题的解决方法。由此,今天写了这篇博客。首先,给大家看看,这个问题是什么样子的。我在这里用到的MySQL可视化工具为Navicat。这个错误…

    2022年6月13日
    31
  • 大话无线通讯基础之:WIFI和5G信道划分

    大话无线通讯基础之:WIFI和5G信道划分目前主流的无线WIFI网络设备802.11a/b/g/n/ac:各种协议的数据传输率:80211.a协议支持的数据传输率:6、9、12、18、24、36、48和54Mbps80211.b协议支持的数据传输率:1、2、5.5和11Mbps80211.g协议支持的数据传输率:6、9、12、18、24、36、48和54Mbps;可以降级到1、2、5.5…

    2022年5月2日
    102
  • ov7725摄像头–图像中间亮四周暗[通俗易懂]

    ov7725摄像头–图像中间亮四周暗[通俗易懂]使用OV7725摄像头采集图像进行商品识别,uvc调试过程中发现图像中间亮四周暗;网上找原因,说是lens的CRA和sensor的CRA不匹配;可以通过矫正透镜改进;查看手册,lenscorrection部分;果然有这部分介绍12 DealwithLens—处理Lens12.1 Lightfalloff—-光线脱落光线掉落意味着图像的角落比图像的中心更暗。它是由镜头引起的…

    2026年2月22日
    6
  • AutoMapper 最佳实践

    AutoMapper 最佳实践AutoMapper nbsp 是一个基于命名约定的对象 对象映射工具 只要 2 个对象的属性具有相同名字 或者符合它规定的命名约定 AutoMapper 就可以替我们自动在 2 个对象间进行属性值的映射 如果有不符合约定的属性 或者需要自定义映射行为 就需要我们事先告诉 AutoMapper 所以在使用 Map src dest 进行映射之前 必须使用 CreateMap 进行配置 Mappe

    2026年3月19日
    3
  • linux查看jdk安装路径

    linux查看jdk安装路径转自博客 http www cnblogs com imyalost p 8745137 html1 whichjava 首先输入命令行 查看结果 root localhost whichjava usr bin javaPS whichJava 是无法定位到 Java 的安装路径的 只能定位到执行路径 whereisJava 也无法定位 只能展示一部分的 Java 路径

    2026年3月16日
    1
  • 中国互联网金融协会提示“龙虾”风险

    中国互联网金融协会提示“龙虾”风险

    2026年3月15日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号