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

访客4年前黑客工具654

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

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

[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;
}

相关文章

借贷记账法的试算平衡方法有哪些(试算平衡表的编制步骤)

  2019年初级会计职称报名结束,考试复习阵营也拉开帷幕。今天小编在这里为大家整理会计科目和借贷记账法的知识点,报名初级的同学快来学习一下哦。   1   会计科目和账户   (一)会计科目   会...

怎么才能闺蜜删除微信聊天记录

. 家长们会发现,到了一定阶段,孩子就喜欢在墙上到处乱涂乱画,其实这是孩子到了绘画敏感期阶段,这个时候家长应该进行正确的引导,帮助孩子,对于孩子有很多的好处,那么宝宝喜欢到处乱涂乱画怎么办呢?接下来...

先进制造技术有哪些(世界上最先进的技术在哪些国家?)

智能制造技术性有什么(世界最优秀的技术性在哪些国家?)1、半导体材料生产设备 基础被日本,英国占据。 现阶段蚀刻加工机器设备精密度最大的是日立。例如东丽,帝人的炭纤维,极高仪器仪表,数控车床,光栅尺描...

狗的社会化训练是什么意思(如何给狗狗进行社

狗的社会化训练是什么意思(如何给狗狗进行社

狗狗听到其他声音就胆怯受惊,带出门过于兴奋,不听指令;见到其他狗狗不能友好地相处;还爱扑人,或者见到陌生人就紧张害怕,甚至大叫?这都是狗狗缺乏社会化训练造成的! 什么是狗狗的社会化意识? 狗狗...

国庆最后一天上高速怎么收费-十一最后一天高速

国庆假期的结束是一件无法避免的事情,就像国庆堵车一样也是避免不了的事情,距离今年国庆假期结束没有几天了。出门在外的小伙伴现在就做好返程的准备了哦,早早的做准备可以避免返程途中出现意外,有小伙伴问国庆最...

葡萄牙再度延长国电影演员李亚林家紧急状态至12月23日

  当地时间12月4日,葡萄牙众议院投票批准从12月9日起再度延长国家紧急状态15天至12月23日。由于葡萄牙宪法规定每次紧急状态延期不能超过15天,总统德索萨宣布将在此之后继续延长紧急状态至2021...