java实现的冒泡排序算法示例

下面是详细的攻略:

冒泡排序算法原理

冒泡排序算法是一种比较简单的排序方法,其基本原理是依次比较相邻的两个元素,将较大的元素向后移动,直到全部元素排序完成。冒泡排序算法的时间复杂度为O(n^2),虽然比较耗时,但由于其简单易懂的特点,经常被用于教学和入门练习。

java实现代码示例

以下是java实现的冒泡排序算法示例:

public static void bubbleSort(int[] arr){
    int temp;
    boolean flag;
    for(int i=0; i< arr.length - 1; i++){
        flag = false; //设置交换标志
        for(int j=0; j< arr.length-1-i; j++){
            if(arr[j] > arr[j+1]){
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
                flag = true; //发生了交换,标志为true
            }
        }
        if(!flag){ //如果一次交换都没有发生,表示排序完成
            break;
        }
    }
}

以上代码是采用java语言实现的冒泡排序算法。变量解释如下:

  • arr:待排序的数组
  • temp:用于交换的中间变量
  • flag:交换的标志,初始值为false

该算法主要通过两层循环来实现:

  1. 外层循环遍历待排序的数组,重复执行内层循环,直至排序完成
  2. 内层循环用于比较相邻的两个元素,若前面的数大于后面的数,则进行交换,同时将交换标志置为true
  3. 如果内层循环一次都没有进行交换操作,则表示这次排序已经完成,直接跳出外层循环

示例说明

示例1

待排序数组为:[5, 3, 8, 1, 2, 9]

第一次排序:

  • 比较5和3,发现5大于3,进行位置交换,数组为:[3, 5, 8, 1, 2, 9]
  • 比较5和8,不交换位置
  • 比较8和1,发现8大于1,进行位置交换,数组为:[3, 5, 1, 8, 2, 9]
  • 比较8和2,发现8大于2,进行位置交换,数组为:[3, 5, 1, 2, 8, 9]
  • 比较8和9,不交换位置

第一轮排序完成,结果为:[3, 5, 1, 2, 8, 9]

第二次排序:

  • 比较3和5,不交换位置
  • 比较5和1,发现5大于1,进行位置交换,数组为:[3, 1, 5, 2, 8, 9]
  • 比较5和2,发现5大于2,进行位置交换,数组为:[3, 1, 2, 5, 8, 9]
  • 比较5和8,不交换位置
  • 比较8和9,不交换位置

第二轮排序完成,结果为:[3, 1, 2, 5, 8, 9]

第三次排序:

  • 比较3和1,发现3大于1,进行位置交换,数组为:[1, 3, 2, 5, 8, 9]
  • 比较3和2,发现3大于2,进行位置交换,数组为:[1, 2, 3, 5, 8, 9]
  • 比较3和5,不交换位置
  • 比较5和8,不交换位置
  • 比较8和9,不交换位置

第三轮排序完成,结果为:[1, 2, 3, 5, 8, 9]

排序完成,最终结果为:[1, 2, 3, 5, 8, 9]

示例2

待排序数组为:[9, 8, 7, 6, 5]

第一次排序:

  • 比较9和8,发现9大于8,进行位置交换,数组为:[8, 9, 7, 6, 5]
  • 比较9和7,发现9大于7,进行位置交换,数组为:[8, 7, 9, 6, 5]
  • 比较9和6,发现9大于6,进行位置交换,数组为:[8, 7, 6, 9, 5]
  • 比较9和5,发现9大于5,进行位置交换,数组为:[8, 7, 6, 5, 9]

第一轮排序完成,结果为:[8, 7, 6, 5, 9]

第二次排序:

  • 比较8和7,发现8大于7,进行位置交换,数组为:[7, 8, 6, 5, 9]
  • 比较8和6,发现8大于6,进行位置交换,数组为:[7, 6, 8, 5, 9]
  • 比较8和5,发现8大于5,进行位置交换,数组为:[7, 6, 5, 8, 9]

第二轮排序完成,结果为:[7, 6, 5, 8, 9]

第三次排序:

  • 比较7和6,发现7大于6,进行位置交换,数组为:[6, 7, 5, 8, 9]
  • 比较7和5,发现7大于5,进行位置交换,数组为:[6, 5, 7, 8, 9]

第三轮排序完成,结果为:[6, 5, 7, 8, 9]

第四次排序:

  • 比较6和5,发现6大于5,进行位置交换,数组为:[5, 6, 7, 8, 9]

第四轮排序完成,结果为:[5, 6, 7, 8, 9]

排序完成,最终结果为:[5, 6, 7, 8, 9]

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现的冒泡排序算法示例 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • SpringBoot整合Spring Data Elasticsearch的过程详解

    下面我将为您详细讲解Spring Boot整合Spring Data Elasticsearch的完整攻略,其中包括以下步骤: 引入依赖 配置Elasticsearch 创建数据实体类 创建Elasticsearch Repository 使用Repository进行数据操作 示例1:添加数据到Elasticsearch中 示例2:从Elasticsearc…

    Java 2023年5月20日
    00
  • 聊聊ResourceBundle和properties读取配置文件的区别

    下面就聊聊ResourceBundle和properties读取配置文件的区别。 一、ResourceBundle和properties的概念 ResourceBundle和properties都是Java中读取配置文件的方式,都可以实现对配置文件的读取、修改和保存等操作。 ResourceBundle:是Java提供的一个用于打包国际化资源的类。它可以用来…

    Java 2023年5月20日
    00
  • Java有哪些操作字符串的类?区别在哪?

    Java中有多个类可以用于操作字符串,以下是比较常用的几个类: String 类: String 是一个 final 类,字符串是一个对象,一旦被创建,就不能被修改。因为Java中的String对象是可以共享的,所以每次对String进行修改时,都会创建一个新的String对象,影响了性能。 示例1:使用加号操作字符串,每次操作都会创建一个新的 String…

    Java 2023年5月27日
    00
  • 解析Java的Hibernate框架中的持久化类和映射文件

    解析Java的Hibernate框架中的持久化类和映射文件 Hibernate是一个Java平台的ORM框架,可以方便地进行对象和关系的映射,从而实现持久化操作。持久化类和映射文件是Hibernate框架中实现持久化操作的核心要素。本文将详细讲解解析Java的Hibernate框架中的持久化类和映射文件的完整攻略。 持久化类 持久化类是Hibernate框架…

    Java 2023年5月31日
    00
  • springData使用QueryDsl的示例代码

    让我来详细讲解一下“Spring Data 使用 Querydsl 的示例代码”的完整攻略。 简介 Querydsl 是一个基于 Java 类型化查询的框架,使得编写类型安全、易于理解的查询变得容易。 Spring Data 是 Spring 框架的一部分,通过提供抽象化的数据存储层来简化对数据访问的开发。Spring Data Querydsl 是 Spr…

    Java 2023年5月20日
    00
  • Mac M1 Java 开发环境配置详解

    下面是“Mac M1 Java 开发环境配置详解”的完整攻略: 环境准备 首先,我们需要确认自己的 Mac 是否使用 Apple Silicon 硅片,在 终端 中执行下面的命令进行确认: uname -m 如果输出结果为 arm64 或 aarch64,说明你的 Mac 采用了 Apple Silicon 硅片。 安装 JDK 因为 M1 Mac 采用的是…

    Java 2023年5月20日
    00
  • tomcat启动不了一闪而过怎么办?tomcat一闪而过无法启动现象的解决方法

    当Tomcat启动时,若一闪而过无法启动,则很可能出现以下问题: Java环境未配置正确,或者Java环境变量未正确设置 Tomcat配置文件中的端口号已被占用 Tomcat安装路径中的文件丢失或损坏 Tomcat版本与当前Java版本不匹配 为解决tomcat无法启动问题,请根据以下步骤: 1. 检查Java环境配置 在cmd命令行工具中输入java –v…

    Java 2023年5月19日
    00
  • spring security自定义认证登录的全过程记录

    下面是关于“spring security自定义认证登录的全过程记录”的详细攻略: 背景 Spring Security是Spring家族中重要的一员,主要用于Web应用的安全框架。它可以实现对应用的URL、方法和资源进行保护,在身份验证和授权方面提供了全面的支持。其中认证是指确认用户身份,而授权是指决定用户可以访问系统哪些资源。Spring Securit…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部