前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >冒泡排序-Java版

冒泡排序-Java版

作者头像
凯哥Java
发布2022-12-16 16:47:25
3830
发布2022-12-16 16:47:25
举报
文章被收录于专栏:凯哥Java

冒泡排序的思路:

循环数组,比较两个相邻的数据大小,大的放在右变。

array[j]>arrar[j+1]:

int temp = array[j];

array[j+1] = array[j];

array[j] = temp;

需要使用到两个for循环:

外层循环是循环数组中所有数据,内层循环是进行比较的。所以外层循环的长度是:array.length-1

内层循环的长度是:array.leng-1-i.

代码语言:javascript
复制
/**
 * 冒泡排序
 * 思路:
 *  循环两个相邻的数进行比较,大的放到右边。
 *  依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。
 *  第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;
 * 第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;
 * 依次类推,每一趟比较次数-1;
 *
 * 所以,需要两个for循环
 * 外层for循环用是用来循环整个数组的,所以循环的次数是:array.length-1
 * 内循环是用来比较的,而内循环比较的次数是:array.length-1-i.这里为什么需要减去i呢?
 * 那是因为,第一趟之后,最后一个数不会参与比较了,第二趟之后,最后两个数不会参与比较了。所以要减去i.
 * 然后在内循环进行比较:
 * 比较 array[j]和array[j+1]的大小。然后进行互换
 *
 */

 代码:

代码语言:javascript
复制
/**
 * 冒泡方法
 * @param array     需要排序的数组
 * @return          返回排序后的数组
 */
public static  void bubbleSortFunction(int []  array){
    for (int i =0;i<array.length-1;i++){
        for(int j = 0 ;j<array.length-1-i;j++){
            //进行比较
            //当j<j+1 这种是倒叙的
           // if(array[j]<array[j+1]){
            //正序
            if(array[j]>array[j+1]){
                int temp = array[j];
                array[j] = array[j+1];
                array[j+1]  = temp;
            }
        }
    }
}

优化版:

设置一个标识,如果没有触发变化,就不循环了。优化后代码:

代码语言:javascript
复制
/**
 * 优化版的
 * @param array
 */
public static void bubbleSortPlusFunction(int [] array){
    Boolean flag = false;
    for(int i =0;i<array.length-1;i++){
        for (int j = 0;j<array.length-1;j++){
            if(array[j]>array[j+1]){
                int temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
                flag = true;
            }
        }
        if(!flag){
            break;
        }
    }
}

测试:

代码语言:javascript
复制
public static void main(String[] args) {
    int [] array = new int []{1,10,2};
    bubbleSortPlusFunction(array);
   for(int data:array){
       System.out.println(data);
   }
}

运行结果:

d853efde6fef4ab2c4527db2d61d9cb2.png
d853efde6fef4ab2c4527db2d61d9cb2.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档