首页 > 编程语言 >用Java实现冒泡排序:实用教程带你入门

用Java实现冒泡排序:实用教程带你入门

时间:2024-01-24 12:32:24浏览次数:28  
标签:实用教程 Java 函数 示例 arr 冒泡排序 数组 排序

在处理一些特定系统功能时,经常需要使用冒泡排序。例如,在一个电子商务网站中,需要对商品进行排序和过滤。这个时候可以使用冒泡排序对商品进行排序,以便用户能够按照价格、销量、评分等不同字段进行排序。通过使用冒泡排序,系统可以提供更加灵活和个性化的排序选项,以便用户能够更加方便地找到他们想要的商品。

以下是2个使用Java编写的冒泡排序函数的示例:

示例1: 接受一个整数数组作为参数,对数组进行冒泡排序,返回排序后的数组

// 类名:BubbleSort
// 函数名:bubbleSort
// 函数功能:对整数数组进行冒泡排序
// POM依赖包:无

public class BubbleSort {
    /**
     * 对整数数组进行冒泡排序
     * @param arr 待排序的整数数组
     * @return 排序后的整数数组
     */
    public static int[] bubbleSort(int[] arr) {
        if (arr == null || arr.length == 0) { // 检查数组是否为空
            throw new IllegalArgumentException("Array cannot be null or empty"); // 抛出异常,数组不能为空
        }

        int n = arr.length;
        for (int i = 0; i < n-1; i++) {
            for (int j = 0; j < n-i-1; j++) {
                if (arr[j] > arr[j+1]) {
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        return arr; // 返回排序后的数组
    }
}

// 函数示例
// 对整数数组进行冒泡排序示例
// 入参:arr,待排序的整数数组
// 出参:sortedArr,排序后的整数数组
// 调用示例:
// int[] arr = {64, 34, 25, 12, 22, 11, 90};
// int[] sortedArr = BubbleSort.bubbleSort(arr);
// for (int num : sortedArr) {
//     System.out.print(num + " ");
// }
// 输出结果:例如,对数组{64, 34, 25, 12, 22, 11, 90}进行冒泡排序得到:11 12 22 25 34 64 90
// 则输出结果为:11 12 22 25 34 64 90

算法解析: 1、检查输入的数组是否为空。如果数组为空,会抛出一个异常。 2、使用嵌套循环进行排序,定义一个外部循环和一个内部循环。外部循环从数组的第一个元素开始,而内部循环从数组的第二个元素开始。在内部循环中,代码比较相邻的两个元素。如果前一个元素大于后一个元素,那么这两个元素就会交换位置。这个过程会一直持续到整个数组被排序。外部循环会重复这个过程,直到整个数组被排序。 3、函数返回排序后的数组

以上函数示例,是一个功能齐全、健壮、易读的冒泡排序实现。 可读性:代码结构清晰,注释详尽,这对于其他开发者理解和维护代码很有帮助。 健壮性:该函数对空数组和非整数数组的情况进行了处理,当输入的数组为空或者包含非整数元素时,会抛出异常。这增加了函数的健壮性,使其在处理异常输入时能够给出明确的错误提示。

示例2:接受一个字符窜数组作为参数,对数组进行冒泡排序,逅回排序后的数组:

// 类名:BubbleSort
// 函数名:bubbleSort
// 函数功能:对字符串数组进行冒泡排序
// POM依赖包:无

public class BubbleSort {
    /**
     * 对字符串数组进行冒泡排序
     * @param arr 字符串数组
     * @return 排序后的数组
     */
    public static String[] bubbleSort(String[] arr) {
        if (arr == null || arr.length <= 1) {
            return arr; // 如果数组为空或长度为1,则返回原数组
        }

        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j].compareTo(arr[j + 1]) > 0) { // 比较相邻两个字符串的大小
                    // 交换两个字符串
                    String temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        return arr; // 返回排序后的数组
    }
}

// 函数示例
// 对字符串数组进行冒泡排序示例
// 入参:arr,待排序的字符串数组
// 出参:sortedArr,排序后的数组
// 调用示例:
// String[] arr = {"banana", "apple", "pear", "orange"};
// String[] sortedArr = BubbleSort.bubbleSort(arr);
// for (String str : sortedArr) {
//     System.out.print(str + " ");
// }
// 输出结果:例如,对字符串数组{"banana", "apple", "pear", "orange"}进行冒泡排序后的结果为:apple banana orange pear
// 则输出结果为:apple banana orange pear

算法解析: 1、函数检查输入的数组是否为空或长度是否小于等于1。如果满足这些条件,则直接返回原数组,因为对于空数组或长度为1的数组,排序没有意义。 2、使用嵌套的for循环实现冒泡排序。外层循环控制排序的轮数,内层循环则负责比较和交换相邻的元素。在内层循环中,使用compareTo方法比较相邻的两个字符串。如果前一个字符串大于后一个字符串(即arr[j].compareTo(arr[j + 1]) > 0),则交换这两个字符串的位置。 3、返回排序后的数组。 4、值得注意的是,代码中还包含了一个示例,展示了如何使用这个函数对一个字符串数组进行排序,并输出排序后的结果。

以上代码示例同样是一个简洁、易于理解和实现的冒泡排序算法实现。 可读性:代码的可读性较好,注释详细,有助于理解代码的功能和实现方式。 可扩展性:代码结构简单,易于扩展以支持更大的字符串数组或不同的排序需求。 依赖性:该代码不依赖于任何外部库或框架,只需Java标准库即可运行。

以上两个基础的冒泡函数示例都是由飞算SoFlu软件机器人推出的FuncGPT(慧函数)生成的。 作为飞算SoFlu软件机器人的一个重要组成部分,FuncGPT(慧函数)支持所有类型函数创建。通过自然语言描述Java函数需求,实时生成高质量、高可读性的Java函数代码。生成代码可直接复制到IDEA,或一键导入Java全自动开发工具函数库。 值得一提的是,输入函数需求后,系统会给出场景选项,用户可直接选择符合的选项进行编辑。对于开发小白非常友好。 image.png 了解代码基本原理及技能基础上,程序员也要善用工具帮助自己工作提效,更多FuncGPT(慧函数)体验,关注公众号【SoFlu软件机器人】

标签:实用教程,Java,函数,示例,arr,冒泡排序,数组,排序
From: https://blog.51cto.com/u_15327851/9394006

相关文章

  • java使用redis 加锁
    配置类:publicclassRedisLockUtil{privatestaticRedisCacheredisCache=null;/***给key加锁,如果加锁成功,则返回true,加锁失败返回false*@return*/publicstaticbooleanlock(Stringkey,Integertimeout,TimeUnittimeUnit){......
  • 探讨Java死锁的现象和解决方法
    死锁是多线程编程中常见的问题,它会导致线程相互等待,无法继续执行。在Java中,死锁是一个需要注意和解决的重要问题。让我们通过一系列详细的例子来深入了解Java死锁的现象和解决方法。1.什么是死锁?死锁是指两个或多个线程在互相等待对方释放锁资源的情况下,导致程序无法继续执行的......
  • Java中的MinIO应用类--版本2
    1.配置类importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importio.minio.MinioClient;@Configuration@Configuratio......
  • Java工具类强推:Hutool
    官方文档:https://www.hutool.cn/docs/#/Github地址:https://github.com/dromara/hutoolGitee地址:https://gitee.com/dromara/hutool❓背景灵魂拷问1:还在为新项目工具类搬迁而烦恼?灵魂拷问2:还在为项目中工具类维护而烦恼?......
  • JAVA学习笔记--输出HelloWorld
    HelloWorld!写出人生第一个代码~随便新建一个文件夹用于存放代码新建一个Java文件新建一个名为Hello的txt文件或其他文本文件,将后缀名改为.java注意:如果系统没有显示文件后缀名,则需要手动打开在Hello.java文件中编写以下代码:publicclassHello{ publicstaticvoi......
  • JAVA学习笔记--JDK安装及环境变量配置
    Java开发环境搭建卸载JDK找到JDK的安装路径,删除JDK的整个文件夹删除JAVA_HOME(右击我的电脑-->属性-->高级系统设置-->环境变量,即可找到JAVA_HOME)删除path下关于java的目录在终端输入java-version,若显示'java'不是内部或外部命令,也不是可运行程序或批处理文件,则成......
  • JAVA学习笔记--常见的Dos命令
    基本的Dos命令打开cmd的方法以管理员的身份打开:开始--->命令提示符(Win11)Win键+R-->输入cmd打开控制台(推荐使用)在任意文件夹下,按住shift键+鼠标右键点击,在此处打开命令行窗口资源管理器的地址栏前面加上cmd路径(注意:cmd后有空格)常见的Dos命令##盘符切换输入想要切换到......
  • java8 函数式(Functional)接口
    什么是函数式(Functional)接口 只包含一个抽象方法的接口,称为函数式接口。 你可以通过Lambda表达式来创建该接口的对象。(若Lambda表达式抛出一个受检异常(即:非运行时异常),那么该异常需要在目标接口的抽象方法上进行声明)。 我们可以在一个接口上使用@FunctionalInterfa......
  • javaScript找出两个数组之中不同的元素
    在JavaScript中,我们可以使用以下方法找到两个数组中不同的元素:1.创建一个函数,将两个数组作为参数传递进去。2.在函数内部,创建一个新的空数组,用于存储不同的元素。3.使用for循环遍历第一个数组,并使用indexOf()方法检查第二个数组中是否存在相同的元素。4.如果第二个数组中......
  • java8找出两个集合List<Employee> 中 id相同的元素,再将别的属性合并,放在新的集合里面
    可以使用Java8的StreamAPI来实现这个需求。具体步骤如下:1.创建一个新的集合,用于存放合并后的元素。2.使用Stream的filter()方法过滤出id相同的元素。3.使用Stream的map()方法将id相同的元素合并成一个新的元素,其中别的属性可以通过自定义的合并规则来实现。4.使用Stream的c......