千家信息网

Java如何实现冒泡排序及优化

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家分享的是有关Java如何实现冒泡排序及优化的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是冒泡排序冒泡排序指重复地走访过要排序的元素列,依次比较两个相邻的
千家信息网最后更新 2026年11月02日Java如何实现冒泡排序及优化

这篇文章给大家分享的是有关Java如何实现冒泡排序及优化的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

什么是冒泡排序

冒泡排序指重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从小到大)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名"冒泡排序"。

思路分析

以{5,3,9,7,1}为例 要求排序后的数组元素顺序按从小到大排序。依次比较相邻的两个数(蓝色),将比较小的数放在前面,比较大的数放在后面。每一轮排序都能得到参与比较的数的最大值(红色)
第一轮排序
5,3,9,7,1 //如果数大于相邻的数就交换位置
3,5,9,7,1
3,5,9,7,1
3,5,7,9,1
3,5,7,1,9 //第一轮排序的结果
第二轮排序
3,5,7,1,9
3,5,7,1,9
3,5,7,1,9
3,5,1,7,9 //第二轮排序的结果
第三轮排序
3,5,1,7,9
3,5,1,7,9
3,1,5,7,9 //第三轮排序的结果
第四轮排序
3,1,5,7,9
1,3,5,7,9 //第四轮排序的结果

代码实现

public class bubble {    public static void main(String[] args) {        int[] array = {5,3,9,7,1};        bubbleSort(array);    }    /**     * 冒泡排序     */    public static void bubbleSort(int[] array){        int temp;        //一共进行length-1次排序        for (int i = 0; i < array.length-1; i++) {            //数组中没有元素或者只有一个元素就无需排序            if(array==null || array.length < 2 ){                return;            }            //每进行一次排序后参与比较的数量减一            for (int j = 0; j < array.length - 1 - i; j++) {                if (array[j]>array[j+1]) {                    //互换元素位置                    temp = array[j];                    array[j]=array[j+1];                    array[j+1]=temp;                }            }            System.out.println("第"+(i+1)+"轮排序的结果是"+ Arrays.toString(array));        }        return;    }}

结果输出

第1轮排序的结果是[3, 5, 7, 1, 9]第2轮排序的结果是[3, 5, 1, 7, 9]第3轮排序的结果是[3, 1, 5, 7, 9]第4轮排序的结果是[1, 3, 5, 7, 9]Process finished with exit code 0

代码优化

根据上述算法发现对于长度为n的数组需要进行n-1轮排序才能算出最终的结果,但是并非所有数组都需要n-1次才能等要最终的排序结果,比如{1,2,3,5,4}我们发现这个数组只需经过一次排序就能得到结果,那么如何对上面的代码进行优化呢?只需判断一轮排序下来有无出现元素互换位置就可以确定是否完成了排序。如果经过一轮排序元素位置没有发生互换说明排序已经完成

public class bubblePlus {    public static void main(String[] args) {        int[] array = {1,2,3,5,4};        bubboSort(array);    }        /**        *冒泡排序        */    public static void bubboSort(int[] array){        int temp;        //判断是否有元素进行交换        boolean flag = false;        for (int i = 0; i < array.length-1; i++) {            if(array==null || array.length < 2 ){                return;            }            //每进行一次排序后参与比较的数量减一            for (int j = 0; j < array.length - 1 - i; j++) {                if (array[j]>array[j+1]) {                    //位置交换就改为true                    flag = true;                    temp = array[j];                    array[j]=array[j+1];                    array[j+1]=temp;                }            }            if (!flag){                //位置没有发生交换说明排序已经完成                break;            }else{                //位置发生改变需要将flag重新置为false以便于下一轮的判断                System.out.println("第"+(i+1)+"轮排序的结果是"+ Arrays.toString(array));                flag = false;            }        }        return;    }}

优化后的结果输出

第1轮排序的结果是[1, 2, 3, 4, 5]Process finished with exit code 0

感谢各位的阅读!关于"Java如何实现冒泡排序及优化"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

排序 结果 元素 位置 一轮 数组 代码 从小到大 三轮 两个 从小 内容 只需 四轮 数量 更多 算法 篇文章 顶端 顺序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技未来 没上市的科技互联网公司 中国 科技 互联网 安徽鑫晟辉互联网科技 上海喔噻互联网科技 互联网巨头投资的硬核科技 老年人脱离互联网科技的作文 创业天下互联网科技有限公司 互联网科技公司实习生 中国航天科技大学国际工业互联网 互联网金融科技展 如何创新互联网科技 2021互联网科技公司排名 怎样加入科技互联网 电子商务与互联网科技的关系 启辰互联网科技 从那以后互联网科技有限公司 半导体行业属于互联网高科技类吗 云鲸互联网络科技有限公司 互联网科技自媒体灵感 上海挚品互联网科技有限公司 工业互联网科技新基建 易通互联网络科技有限公司 赫美联合互联网科技 坤平互联网科技 开一家科技互联网公司需要多少钱 民营互联网公司国防科技 徐州市互联网科技有限公司 互联网科技融合创新 银川新华互联网科技学校是国营吗
0