史上最详细最简单的冒泡排序,一学就会,一看就懂,一面试就懵!
发布日期:2021-04-30 21:09:25 浏览次数:122 分类:精选文章

本文共 1350 字,大约阅读时间需要 4 分钟。

冒泡排序详解

冒泡排序是一种简单有效的排序算法,通过反复交换相邻元素的位置,使较大的元素“冒泡”到最后一位,最终得到一个有序的数组。以下是对数组{2,4,3,1}进行冒泡排序的详细过程。


第一轮冒泡

  • 比较元素2和4

    元素2(索引0)与元素4(索引1)比较,2<4,无需交换。

  • 比较元素4和3

    元素4(索引1)与元素3(索引2)比较,4>3,交换位置,数组变为{2,3,4,1}。

  • 比较元素4和1

    元素4(索引2)与元素1(索引3)比较,4>1,交换位置,数组变为{2,3,1,4}。


  • 第二轮冒泡

  • 比较元素2和3

    元素2(索引0)与元素3(索引1)比较,2<3,无需交换。

  • 比较元素3和1

    元素3(索引1)与元素1(索引2)比较,3>1,交换位置,数组变为{2,1,3,4}。

  • 比较元素3和4

    元素3(索引2)与元素4(索引3)比较,3<4,无需交换。


  • 第三轮冒泡

  • 比较元素2和1

    元素2(索引0)与元素1(索引1)比较,2>1,交换位置,数组变为{1,2,3,4}。

  • 比较元素2和3

    元素2(索引1)与元素3(索引2)比较,2<3,无需交换。

  • 比较元素3和4

    元素3(索引2)与元素4(索引3)比较,3<4,无需交换。


  • 优化代码

    将上述过程转化为代码,优化后的代码如下:

    public static void main(String[] args) {    int[] arr = new int[]{2000, 400, 30, 100, 50, 60};    int condition = arr.length - 1; // 设置比较的上限    for (int i = 0; i < condition; i++) { // 外层循环控制每次递减一个元素的范围        for (int j = 0; j < condition - i; j++) { // 内层循环遍历当前范围内的每个元素            if (arr[j] > arr[j + 1]) { // 比较当前元素和下一个元素                int temp = arr[j + 1]; // 交换变量存储                arr[j + 1] = arr[j];                arr[j] = temp;            }        }    }    // 输出排序后的数组    for (int i = 0; i < arr.length; i++) {        System.out.print(arr[i] + " ");    }}

    代码解释

  • 外层循环for (int i = 0; i < condition; i++)

    外层循环控制每次递减一个元素的范围,逐步优化排序。

  • 内层循环for (int j = 0; j < condition - i; j++)

    内层循环遍历当前范围内的每个元素,逐一进行比较和交换。

  • 比较与交换if (arr[j] > arr[j + 1]) { ... }

    比较当前元素和下一个元素,如果前者较大则交换位置。

  • 通过这种方式,冒泡排序逐渐将最大的元素排至数组末尾,最终完成排序任务。

    上一篇:初中级程序员进阶高级程序员,必须要了解的设计模式(45种设计模式)
    下一篇:为dwz扩展树形下拉框

    发表评论

    最新留言

    感谢大佬
    [***.8.128.20]2026年06月24日 12时50分33秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章