当前位置: 首页 > article >正文

《Java 实现冒泡排序:详细解析与示例代码》

目录

一、引言

二、冒泡排序原理

三、代码分析

1. 代码整体结构

2. main方法

3. sort 方法

四、测试结果


一、引言

排序算法在计算机科学领域中是非常基础且重要的一部分,它能够帮助我们将一组无序的数据按照特定的顺序(如升序或降序)进行排列,以便于后续的处理和分析。冒泡排序作为一种简单直观的排序算法,虽然在实际应用中可能不是效率最高的,但却是学习排序算法的一个很好的入门点。在这篇博客中,我们将详细解析一段用 Java 实现冒泡排序的代码。

二、冒泡排序原理

冒泡排序的基本思想是通过反复比较相邻的两个元素,如果它们的顺序不符合要求(例如在升序排序中,前面的元素大于后面的元素),就将它们交换位置。这样,每一轮比较都会将当前未排序部分中的最大元素 “浮” 到末尾,就像气泡从水底冒到水面一样,经过多轮比较,整个数组就会被排序完成。

三、代码分析

1. 代码整体结构

以下是我们要分析的 Java 代码实现冒泡排序的完整代码:

package 排序;

import java.util.Arrays;

public class BubbleSort {

    public static void main(String[] args) {
        int[] arr = {5, 7, 4, 2, 0, 3, 1, 6};
        sort(arr);

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

    public static void sort(int[] arr) {
        for (int j = 0; j < arr.length; j++) {
            for (int i = 0; i < arr.length - 1 - j; i++) {
                if (arr[i] > arr[i + 1]) {
                    //进行交换
                    int temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
            }
        }
    }
}

2. main方法

在 main 方法中,我们首先定义了一个整数数组 arr,并初始化它的值为 {5, 7, 4, 2, 0, 3, 1, 6}。这就是我们要进行排序的原始数组。

int[] arr = {5, 7, 4, 2, 0, 3, 1, 6};

然后,我们调用了 sort 方法,并将数组 arr 作为参数传递给它,目的是对这个数组进行排序操作。

sort(arr);

最后,在排序完成后,我们使用 Arrays.toString 方法将排序后的数组以字符串的形式输出到控制台,这样我们就可以直观地看到排序的结果。

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

3. sort 方法

sort 方法是实现冒泡排序核心逻辑的地方。

public static void sort(int[] arr) {
    for (int j = 0; j < arr.length; j++) {
        for (int i = 0; i < arr.length - 1 - j; i++) {
            if (arr[i] > arr[i + 1]) {
                //进行交换
                int temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }
        }
    }
}
  • 外层循环:这里使用了一个 for 循环,循环变量 j 从 0 开始,一直到数组的长度 arr.length。这个外层循环控制着排序的轮数,对于一个长度为 n 的数组,总共需要进行 n 轮排序。

  • 内层循环:在内层,同样是一个 for 循环,循环变量 i 从 0 开始,到 arr.length - 1 - j 结束。这个内层循环负责在每一轮排序中比较相邻的元素。注意这里 arr.length - 1 - j 的原因是,随着每一轮排序的进行,已经有 j 个最大的元素被 “浮” 到了数组的末尾,所以在这一轮中,我们只需要比较前面还未完全排序的部分,也就是数组的前 arr.length - 1 - j 个元素。

  • 元素比较与交换:在每一次内层循环中,如果发现当前元素 arr[i] 大于它后面的元素 arr[i + 1],就通过一个临时变量 temp 来交换它们的位置,使得较大的元素往后移动,就像气泡往上冒一样。

四、测试结果

当我们运行上述代码时,控制台会输出排序后的数组。对于我们给定的初始数组 {5, 7, 4, 2, 0, 3, 1, 6},经过冒泡排序后,输出结果应该是 {0, 1, 2, 3, 4, 5, 6, 7}


http://www.kler.cn/a/378715.html

相关文章:

  • “路由”的理解
  • 教育技术革新:SpringBoot在线试题库系统开发
  • Vue Router 中 router、route 和 routes 的区别 - 2024最新版前端秋招面试短期突击面试题【100道】
  • VS2019的使用
  • S32K324 DTCM/DTCM Backdoor使用及测试
  • Pytorch猴痘病识别
  • Django安装
  • MongoDB Shell 基本命令(三)聚合管道
  • 银河麒麟v10 xrdp安装
  • Tomcat 和 Docker部署Java项目的区别
  • uniapp使用中小问题及解决方法集合
  • ARM base instruction -- bfxil
  • 第五篇: 使用Python和BigQuery进行电商数据分析与可视化
  • 【bug解决】 g++版本过低,与pytorch不匹配
  • 下载安装COPT+如何在jupyter中使用(安装心得,windows,最新7.2版本)
  • postgresql增量备份系列一
  • TensorRT-LLM的k8s弹性伸缩部署方案
  • 数据转换 | Matlab基于SP符号递归图(Symbolic recurrence plots)一维数据转二维图像方法
  • Unity XR Interaction Toolkit 开发教程(4)XR Origin:追踪参考系与相机高度【3.0以上版本】
  • 三层交换技术,eNSP实验讲解
  • 【大模型开发指南】llamaindex配置deepseek、jina embedding及chromadb实现本地RAG及知识库(win系统、CPU适配)
  • Redis系列---数据管理
  • git入门教程8:git高级分支管理
  • YOLO11论文 | 重要性能衡量指标、训练结果评价及分析及影响mAP的因素【发论文关注的指标】
  • Docker Swarm集群配置与使用
  • 基于知识中台的智能法律咨询服务:革新法律服务的新篇章