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

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

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

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

[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;
}
转载请注明出处:JavaScript实现冒泡排序算法-前端日志网
思源资源网:分类流动

1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入

2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各种产物的最新流动,优惠券领取点击进入

3.广告同盟: 整理了现在主流的广告同盟平台,若是你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/121

  • 发表于 2021-04-05 12:18
  • 阅读 ( 270 )
  • 分类:互联网

0 条评论

请先 登录 后评论
注单异常
注单异常

713 篇文章

你可能感兴趣的文章

相关问题