• 八大排序之一:冒泡排序


    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就直接结束外层循环了.
            }
    }
    }
    }



  • 相关阅读:
    20201015-3 每周例行报告
    20201008-1 每周例行报告
    20200924-1 每周例行报告
    20200924-3 单元测试,结对
    刷题-Leetcode-120. 三角形最小路径和
    刷题-Leetcode-1025. 除数博弈
    刷题-Leetcode-217. 存在重复元素
    刷题-Leetcode-24.两两交换链表中的节点
    刷题-AcWing-104. 货仓选址
    ARP报文抓包解析实验报告
  • 原文地址:https://www.cnblogs.com/shenyueshuo/p/12925787.html
Copyright © 2020-2023  润新知