java排序算法之冒泡排序

Java排序算法之冒泡排序是一种简单的排序算法,它通过比较相邻两个元素的大小,如果前一个元素大于后一个元素,则交换它们的位置,重复这个过程直到整个数组排好序。

基本思路

  1. 遍历数组,将相邻两个元素进行比较,若前一个元素比后一个大,则交换它们的位置;
  2. 每遍历一轮,就可以找到当前最大或最小的元素,需要遍历数组长度减去已排序部分的次数。

代码实现

public static void bubbleSort(int[] arr) {
    for (int i = 0; i < arr.length - 1; i++) {
        for (int j = 0; j < arr.length - 1 - i; j++) { // 遍历需要排序的元素
            if (arr[j] > arr[j + 1]) { // 比较相邻两个元素的大小
                int temp = arr[j];
                arr[j] = arr[j + 1]; // 交换元素
                arr[j + 1] = temp;
            }
        }
    }
}

示例说明

假设要对以下数组进行从小到大排序:

int[] arr = { 3, 2, 5, 1, 4 };
  • 第一轮排序

在第一次遍历数组时,比较arr[0]与arr[1],发现arr[0]>arr[1],需要进行交换,可以得到数组:

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

接下来比较arr[1]与arr[2],因为已经交换了arr[0]和arr[1]的位置,现在的arr[1]为3,arr[2]为5,不需要交换,可以得到数组:

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

依此类推,可以得到排好序的数组:

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

  • 第二轮排序

在第二次遍历数组时,需要比较的元素为arr[0]和arr[1],arr[1]和arr[2],arr[2]和arr[3],arr[3]和arr[4],可以得到排好序的数组:

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

  • 第三轮排序

第三次遍历数组时,只需要比较arr[0]和arr[1],arr[1]和arr[2],arr[2]和arr[3],可以得到排好序的数组:

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

经过三轮排序后,可以得到从小到大排好序的数组。

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

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

相关文章

  • 关于SpringBoot创建存储令牌的媒介类和过滤器的问题

    Spring Boot是一个流行的Java框架,可以用于快速开发Web应用程序。在Web应用程序中,通常需要使用token进行身份验证和授权,因此创建和存储令牌是非常重要的。本文将介绍如何使用Spring Boot创建媒介类和过滤器来存储和验证token并解决与存储令牌有关的问题。 创建TokenStorage媒介类 TokenStorage是一个媒介类,用…

    Java 2023年5月19日
    00
  • java使用httpclient发送post请求示例

    下面是关于 Java 使用 HttpClient 发送 POST 请求的完整攻略。 组件 在 Java 中发送 HTTP 请求,我们可以使用 Apache 的 HttpClient 组件,它提供了一系列的 API 帮助我们创建和发送请求。 在使用 HttpClient 组件之前,需要下载 HttpClient 组件的 jar 包,并将其添加到项目依赖中。 P…

    Java 2023年5月26日
    00
  • ActionScript3禁止构造请求标头Referer

    对于ActionScript3禁止构造请求标头Referer这个问题,我们需要按照以下步骤进行操作: 第一步:禁止Flash Player构造请求标头Referer 在 ActionScript 3 中,需要使用 URLLoader 或 URLRequest 对象发送 HTTP 请求。默认情况下,Flash Player 会向服务器发送包含 Referer …

    Java 2023年6月16日
    00
  • 基于CXF搭建webService的实例讲解

    基于CXF搭建webService的实例讲解可以分为如下步骤: 1. 环境准备 在开始之前,需要准备好以下环境: JDK1.8及以上版本 Apache Maven Apache CXF框架 CXF可以通过Maven进行依赖管理,因此只需要在pom.xml中添加CXF的相关依赖即可,如下所示: <dependency> <groupId&gt…

    Java 2023年5月20日
    00
  • Java使用数组实现ArrayList的动态扩容的方法

    Java中的ArrayList是一种基于动态数组实现的动态数据结构,其容量可以动态地增加或缩减。在使用ArrayList时,如果我们需要添加更多元素到列表中,就需要涉及扩容操作。下面详细介绍在Java中使用数组实现ArrayList的动态扩容的方法。 定义一个数组来保存列表元素 在Java中,我们可以通过定义一个数组来保存ArrayList的元素。数组的大小…

    Java 2023年5月26日
    00
  • 如何运行SpringBoot项目的方法

    如何运行Spring Boot项目的方法 Spring Boot是一个非常流行的Java开发框架,它提供了多种运行方式,包括命令行、Maven插件、Gradle插件等。本文将详细介绍如何运行Spring Boot项目的方法,包括命令行、Maven插件、Gradle插件等。 1. 命令行 使用命令行运行Spring Boot项目是最简单的方法。我们只需要在项目…

    Java 2023年5月14日
    00
  • Java如何在命令行中获取指定数据

    以下是关于Java在命令行中获取指定数据的攻略: 1.概述 在Java中,我们可以通过命令行参数获取指定的数据。命令行参数是一种程序传递信息给它自身的传统方式,当您调用一个Java程序时,它可以通过命令行中的参数来获取一些额外的信息。这样,程序就可以根据这些参数来执行不同的逻辑或操作。 2.获取命令行参数 在Java中,获取命令行参数是非常简单的。当您运行一…

    Java 2023年5月26日
    00
  • spring mvc4的日期/数字格式化、枚举转换示例

    下面是关于“Spring MVC4的日期/数字格式化、枚举转换示例”的完整攻略,包含两个示例说明。 Spring MVC4的日期/数字格式化、枚举转换示例 Spring MVC4提供了强大的数据绑定和类型转换功能,可以自动将HTTP请求参数转换为Java对象,并将Java对象转换为HTTP响应。下面我们将详细介绍Spring MVC4的日期/数字格式化和枚举…

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