zoukankan      html  css  js  c++  java
  • 八大排序之一:冒泡排序

    public static void bubbleSort(int[] array) {
    //临时变量
    int tempVar;
    //外层for,判断我们要比较多少次 这里是9次
    for (int i = 0; i < array.length - 1; i++) {
    //内层for,比较两个数,如果第一个数,比第二个数大,就交换位置
    //{5, 2, 1, 3, 4, 9, 7, 8, 10, 6};
    for (int j = 0; j < array.length-1-i; j++) {
    //这里用 > 号,会外层跑完一圈,会沉淀一个最小的数在数组尾部, (降序)
    // 如果用了<号,外层跑完一圈,就会沉淀出一个最大的数在数组尾部(升序)
    if (array[j+1] > array[j]) {
    tempVar = array[j+1];
    array[j+1] = array[j];
    array[j] = tempVar;
    }
    }

    }
    }
    优化:我们加了一个 boolean flag;//用来减少无意义的比较
    //比如:假如需要升序 ,但是{1 ,2 ,3 ,4 ,5} 这个数组已经默认排好序了,我们外层for就只要跑一圈就可以了.
    // 内层for 全部跑完,发现没有交换的数值,然后就可以把flag设置为false了,避免了外层for再次执行....
    public static void bubbleSort(int[] array) {
    //临时变量
    int tempVar;
    //外层for,判断我们要比较多少次 这里是9次
    for (int i = 0; i < array.length - 1; i++) {
          int flag = false;
    //内层for,比较两个数,如果第一个数,比第二个数大,就交换位置
    //{5, 2, 1, 3, 4, 9, 7, 8, 10, 6};
    for (int j = 0; j < array.length-1-i; j++) {
    //这里用 > 号,会外层跑完一圈,会沉淀一个最小的数在数组尾部, (降序)
    // 如果用了<号,外层跑完一圈,就会沉淀出一个最大的数在数组尾部(升序)
    if (array[j+1] > array[j]) {
    tempVar = array[j+1];
    array[j+1] = array[j];
    array[j] = tempVar;
              flag = true;//设置为true 说明外层for还需要继续跑下去
    }
            if(flag==false){
             break;//如果经过一波内存循环,flag还是为false就直接结束外层循环了.
            }
    }
    }
    }



  • 相关阅读:
    FFT加速多项式乘法C语言版(基2FFT)
    springboot2中@ConfigurationProperties装载yml文件的时候调取出现值为null的解决办法
    LeetCode27-移除元素
    dom4j在解析xml文件的时候将" "解析成空格的解决办法
    LeetCode17- 电话号码的字母组合
    LeetCode19- 删除链表的倒数第N个节点
    LeetCode14- 最长公共前缀
    LeetCode20- 有效的括号
    LeetCode21- 合并两个有序链表
    MySQL单表百万数据记录分页性能优化
  • 原文地址:https://www.cnblogs.com/shenyueshuo/p/12925787.html
Copyright © 2011-2022 走看看