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



  • 相关阅读:
    Bitnami Redmine安装和插件配置
    DataTable转换成List<T>
    学习Javascript闭包(Closure)
    单例模式(Singleton)
    哈希表--HashSet<T>
    .NET 4.0中的泛型的协变和逆变
    vue-cli脚手架里如何配置屏幕自适应
    新手如何理解JS面向对象开发?
    vue轮播图插件vue-awesome-swiper的使用与组件化
    vue中sass的配置安装流程
  • 原文地址:https://www.cnblogs.com/shenyueshuo/p/12925787.html
Copyright © 2011-2022 走看看