JAVA冒泡排序算法(含详细过程代码讲解及优化)[通俗易懂]

JAVA冒泡排序算法(含详细过程代码讲解及优化)[通俗易懂]冒泡排序算法拆分讲解及优化java冒泡排序一、代码的拆分讲解从上面步骤,可以观察到每次的j都相对于前一趟进行-1操作,所以可以把这些操作套在一个for循环里来控制j即可。二、冒泡排序的代码优化的目的:数组有可能在中间某一过程就已经有序,无序再进行后面操作。java冒泡排序以3,9,-1,10,-2这组数为例,对这组数使用冒牌排序使其有序一、代码的拆分讲解首先创建一个数组和一个用于三角交换的变量intarr[]={3,9,-1,10,-2};inttemp=0;首先进行第一趟

大家好,欢迎来到IT知识分享网。


java冒泡排序

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

一、代码的拆分讲解

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

int arr[] = { 
   3,9,-1,10,-2};
int temp = 0;

首先进行第一趟

 //第一趟排序,就是将最大的数排在最后
        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;
            }
        }

第一趟的运行后的数组
在这里插入图片描述

然后第二趟

 //第一趟排序,就是将最大的数排在最后
        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;
            }
        }

第二趟的运行后的数组
在这里插入图片描述

第三趟

 //第一趟排序,就是将最大的数排在最后
        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;
            }
        }

第三趟的运行后的数组
在这里插入图片描述

第四趟

 //第一趟排序,就是将最大的数排在最后
        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方法里:

普通冒泡排序:

    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;
                }
            }
        }
    }

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

优化冒泡排序:

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;
            }
        }
    }

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/25477.html

(0)
上一篇 2023-07-22 18:33
下一篇 2023-07-24 13:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信