前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA冒泡排序算法(含详细过程代码讲解及优化)「建议收藏」

JAVA冒泡排序算法(含详细过程代码讲解及优化)「建议收藏」

作者头像
Java架构师必看
发布2022-06-22 08:31:23
5.8K0
发布2022-06-22 08:31:23
举报
文章被收录于专栏:Java架构师必看

大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说JAVA冒泡排序算法(含详细过程代码讲解及优化)「建议收藏」,希望能够帮助大家进步!!!

冒泡排序算法拆分讲解及优化


java冒泡排序

3,9,-1,10,-2这组数为例,对这组数使用冒牌排序使其有序

一、代码的拆分讲解

首先创建一个数组和一个用于三角交换的变量

代码语言:javascript
复制
int arr[] = { 
   3,9,-1,10,-2};
int temp = 0;

首先进行第一趟

代码语言:javascript
复制
此代码由Java架构师必看网-架构君整理
 //第一趟排序,就是将最大的数排在最后
        for (int j = 0; j < arr.length - 1; j++) { 
   
            if (arr[j] > arr[j+1]){ 
   
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }

第一趟的运行后的数组

然后第二趟

代码语言:javascript
复制
 //第一趟排序,就是将最大的数排在最后
        for (int j = 0; j < arr.length - 1-1; j++) { 
   
            if (arr[j] > arr[j+1]){ 
   
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }

第二趟的运行后的数组

第三趟

代码语言:javascript
复制
此代码由Java架构师必看网-架构君整理
 //第一趟排序,就是将最大的数排在最后
        for (int j = 0; j < arr.length - 1 -2; j++) { 
   
            if (arr[j] > arr[j+1]){ 
   
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }

第三趟的运行后的数组

第四趟

代码语言:javascript
复制
 //第一趟排序,就是将最大的数排在最后
        for (int j = 0; j < arr.length - 1 -3; j++) { 
   
            if (arr[j] > arr[j+1]){ 
   
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }

第四趟的运行后的数组

下面是四趟代码的结果汇总:

从上面步骤,可以观察到每次的j都相对于前一趟进行-1操作,所以可以把这些操作套在一个for循环里来控制j即可。

二、冒泡排序的代码

下面为冒泡排序的代码,并把它写入bubblesSort方法里:

普通冒泡排序:

代码语言:javascript
复制
    public static void bubbleSort(int[] arr){ 
   
        //冒泡排序的时间复杂度为O(n*n)
        int temp = 0;//临时变量
        for (int j = 0; j < arr.length - 1; j++) { 
   

            for (int i = 0; i < arr.length-1 -j ; i++) { 
   
                if (arr[i] > arr[i+1]){ 
   
                    //三角交换
                    temp = arr[i];
                    arr[i] = arr[i+1];
                    arr[i+1] = temp;
                }
            }
        }
    }

优化的目的:数组有可能在中间某一过程就已经有序,无序再进行后面操作。

优化冒泡排序:

代码语言:javascript
复制
public static void bubbleSort(int[] arr){ 
   
        //冒泡排序的时间复杂度为O(n*n)
        int temp = 0;//临时变量
        boolean flag = false;//用于优化冒泡排序,判断是否进行过交换
        for (int j = 0; j < arr.length - 1; j++) { 
   

            for (int i = 0; i < arr.length-1 -j ; i++) { 
   
                if (arr[i] > arr[i+1]){ 
   
                     //三角交换
                    temp = arr[i];
                    arr[i] = arr[i+1];
                    arr[i+1] = temp;
                    flag = true;
                }
            }
            //如果没有进入三角交换则证明数组已经有序,直接退出循环即可
            //如果进入了三角交换,把flag赋值为false,来判断下一次循环是否进入三角交换
            if (flag == false){ 
   
                break;
            }else { 
   
                flag = false;
            }
        }
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-222,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 冒泡排序算法拆分讲解及优化
  • java冒泡排序
  • 一、代码的拆分讲解
    • 从上面步骤,可以观察到每次的j都相对于前一趟进行-1操作,所以可以把这些操作套在一个for循环里来控制j即可。
    • 二、冒泡排序的代码
      • 优化的目的:数组有可能在中间某一过程就已经有序,无序再进行后面操作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档