原生js实现冒泡排序算法,javascript冒泡排序

访客4年前黑客工具614

冒泡排序是一个异常常见的排序算法,对于一个数组,每趟排序时依次对照两个相邻的数,若是他们的顺序错误就交流两数位置。以是,没趟排序都市排好一个数字,下一轮排序就可以少对照一个数字,直到只剩下一个数字,就所有排序好了。

举个例子,假设最终需要的效果是从小到大排列,对于数组:

[3, 5, 2, 6, 1, 7, 4]

之一趟排序的历程:

[3, 5, 2, 6, 1, 7, 4]

// 对照历程:
// 1. 对照 3 和 5,发现顺序准确,则稳固
[3, 5, 2, 6, 1, 7, 4]

// 2. 对照 5 和 2,发现顺序错误,交流位置
[3, 2, 5, 6, 1, 7, 4]

// 3. 对照 5 和 6,发现顺序准确,稳固
[3, 2, 5, 6, 1, 7, 4]

// 4. 对照 6 和 1,发现顺序错误,交流位置
[3, 2, 5, 1, 6, 7, 4]

// 5. 对照 6 和 7,发现顺序准确,稳固
[3, 2, 5, 1, 6, 7, 4]

// 5. 对照 7 和 4,发现顺序错误,交流位置
[3, 2, 5, 1, 6, 4, 7]

排序历程中,所有相邻数字对都对照了一遍,对照的历程中,实质上是对照的相邻位置,而不管位置上的数字是否在上一次对照中交流了位置,只管一个一个位置的对照下去,数字顺序错误就把数字位置交流。经由这趟排序,发现更大的数字 7 已经排到了最后一个位置,以是下一趟排序就不需要再对照最后一个位置的数字了。

第二趟排序历程:

// 经由之一趟排序后的数组
[3, 2, 5, 1, 6, 4, 7]

// 对照历程:
// 1. 对照 3 和 2,发现顺序错误,交流位置
[2, 3, 5, 1, 6, 4, 7]

// 2. 对照 3 和 5,发现顺序准确,稳固
[2, 3, 5, 1, 6, 4, 7]

// 3. 对照 5 和 1,发现顺序错误,交流位置
[2, 3, 1, 5, 6, 4, 7]

// 4. 对照 5 和 6,发现顺序准确,稳固
[2, 3, 1, 5, 6, 4, 7]

// 5. 对照 6 和 4,发现顺序错误,交流位置
[2, 3, 1, 5, 4, 6, 7]

// 最后一个数字不用对照

经由第二趟排序后,数字 6 也排到了准确的位置。第三趟排序时,最后两位数字都不用对照了。

每一趟排序,都市把剩余数字中更大的排到最后面。后面的排序历程就不再剖析了。清晰了排序历程,写代码来排序就很简朴了,代码如下:

function bubbleSort(arr) {
    var arr = arr.slice(0); // 保证排序后原数组稳固
    var len = arr.length;
    var tmp;

    // 只需要举行 len - 1 趟排序
    // 由于只剩下一个数字时不用再对照了
    for (var i = 0; i < len - 1; ++i) {

        // 每一趟都市排序好一个数字
        // 以是每趟只需排 len - i 个数字
        for (var j = 1; j < len - i; ++j) {

            // 若是右边的数比左边的小
            // 就交流位置
            if (arr[j] < arr[j-1]) {
                tmp = arr[j];
                arr[j] = arr[j-1];
                arr[j-1] = tmp;
            }
        }

        // 这里可以打印出每趟排序的效果
        // 以便考察排序历程
        // console.log(arr);
    }

    return arr;
}

相关文章

怎样查询老婆在外面的所有开房记录 老婆和别人的开房记录怎么查询

各种颜色的射线交错,简直是目不暇接。从统计数据上看,中国是最大的攻击源,这从地图上也可以很明显地看到,原来第二名是美国,在半小时后变成了土耳其,西班牙尾随其后。而美国则成为了最大的被攻击源,后面紧跟着...

从第三方数据领会种种移动装备的使用情况

名字叫做友盟指数,通过在开发者工具中添加的统计工具, 统计移动装备(手机、PAD)的使用情形,好比操作系统、手机型号、都会、逐日使用时间等。 从数据上看,是很精致的,看样子数据是靠谱的。 随便点...

飞聊App怎么运营?新的流量池来了!

从飞聊的宣传文章内容中,以及结合当前产品的基本形态,可以看出飞聊想要做一款去中心化的社交聊天产品,但明显的是飞聊目前正处于开荒期,距离实现目标还有很长一段时间的路要走。 多闪似乎凉了,那我们来简单聊一...

春运期间严查黑客运的简单介绍

春运期间严查黑客运的简单介绍

本文导读目录: 1、春运期间,广州南站针对的士进行非现场执法 2、正在运行的客运公司春运期间执行吗? 3、威海文登:整治非法营运,保障春运安全 4、浅谈如何治理治理高速公路客车违法上下客...

小娘惹菊香的结局是什么 菊香是怎么死的

小娘惹菊香的结局是什么 菊香是怎么死的

《小娘惹》是一部以女士为主导的电视连续剧,可是剧里的女性角色的运势都很凄惨,女一号月娘的妈妈菊香的一生都会吃苦,最终总算直到了恋人,却不曾在一起白头偕老。那麼小娘惹菊香的结果是啥 菊香是怎死的呢?下...

微信登录收不到验证码什么情况

微信APP版本为v7.0.19,微信登录收不到验证码的原因是:      1、手机上面的网络状态错误。如果手机收到的信号比较弱,将手机带到信号较好的地方,重新获取短信验证码。      2、没有输入...