zoukankan      html  css  js  c++  java
  • 冒泡排序

      // 冒泡排序
            // 通过 冒泡排序 完成 数组中数值的排序
            // 核心思路: 
            //     两个相邻的数值,进行比较,如果第一个数值较大,就将两个单元交换存储数值

            // 每次比较一个最大值,存储在数组的结束位置

            // 冒泡排序,是比较数值,交换存储数据

            // 核心优化点:
            //     1, 循环比较时,是当前单元和下一个单元进行比较,最后一个单元是没有比较对象的
            //        实际的循环范围是  第一个单元 到 倒数第二个单元
            //        j <= arr.length-1-1
            //
            //     2, 上一次比较出的最大值,不需要参与下一次的比较
            //        j <= arr.length-1-1 -i
            //
            //     3, 如果是5个单元,实际只要循环比较4次,就可以完成所有的排序
            //        也就是只剩下最后一个单元没有排序是,是没有循环比较的对象的
            //        i 是从 0 开始 循环 实际的循环 是 0  至 arr.length-1 -1
            //        i <= arr.length-1 -1


            // 将数组数值,从小到大,进行排序
            var arr = [3,21,3,14,342,14,34,123,4,32];

            // 外层for循环,是循环执行,比较出最大值,完成整个数组的排序
            // 优化点 : n个单元,只要完成 n-1 次循环,就可以完成整个数组的排序

            // i 从 0 开始 是 方便记录 每次 少参与循环的单元
            // 第一次循环,没有比较出最大值,所有的单元都需要参与比较 此时 i 是 0 ,也就是少比较的单元是0个
            // 第二次循环,已经比较出了一个最大值,这个最大值,不再参与第二次的比较 此时 i 是 1 ,也就是少比较的单元是1个

            for(var i = 0 ; i <= arr.length-1-1 ; i++){

                // 内层for循环,完成的是,循环比较出一个最大值
                // 优化点 : 1,当前单元与下一个单元进行比较,最后一个单元是没有下一个单元比较对象
                //            实际循环是 第一个单元 至 每次需要参与比较的倒数第二个单元
                // 
                //         2,已经比较出的最大值,不参与下一次的比较
                // 
                //         第一次是所有的单元,也就是9个单元参与比较,实际循环是从第一个到倒数第二个单元,也就是第八个单元参与比较
                //         第二次最后一个单元已经是最大值,不参与比较,也就是8个单元参与比较,实际循环是从第一个到倒数第二个单元,也就是第七个单元参与比较
                //         第三次最后两个单元已经是最大值,不参与比较,也就是7个单元参与比较,实际循环是从第一个到倒数第三个单元,也就是第六个单元参与比较

                // arr.length-1 是最大的索引下标
                // 每次循环的索引下标,都只需要到,倒数第二个索引下标 arr.length-1-1
                // 每次循环,之前已经比较出的最大值,不需要再参与循环 arr.length-1-1-i

                for(var j = 0 ; j <= arr.length-1-1 -i ; j++){

                    // 如果当前单元数据,大于下一个单元数据,就做存储数据的交换
                    if(arr[j] > arr[j+1]){
                        var num = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = num;
                    }
                }
            }
    右侧打赏一下 代码改变世界一块二块也是爱
  • 相关阅读:
    Python进阶(二)
    python基础(四)
    Python基础(三)
    python基础(二)
    Python基础(一)
    backbone之extend方法(刚明白了点)
    js中url相关
    bootstrap导航、导航条及导航翻页相关详解
    bootstrap中css组件(除导航条)
    bootstrap基础排版优化
  • 原文地址:https://www.cnblogs.com/ht955/p/14040035.html
Copyright © 2011-2022 走看看