侧边栏壁纸
博主头像
uvdream博主等级

一切皆有可能!

  • 累计撰写 37 篇文章
  • 累计创建 21 个标签
  • 累计收到 18 条评论

【经典算法】冒泡排序

uvdream
2021-09-04 / 0 评论 / 14 点赞 / 682 阅读 / 765 字
温馨提示:
本文最后更新于 2022-04-08,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

冒泡排序

算法描述

  • 比较相邻的元素。如果第一个比第二个大,就交换它们两个;
  • 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是- 最大的数;
  • 针对所有的元素重复以上的步骤,除了最后一个;
  • 重复步骤 1~3,直到排序完成。

简单的说就是比较相邻的数,大的就不断交换位置往后面排,每次遍历都会找到遍历的数据中最大的那个

动态图示

代码实现

var arrData2 = [7, 2, 4, 1, 9, 8]

function bubbleSort(arr) {

    // 外层arr.length-1去掉最后一个元素,第一次循环会找出最大的数放在最后一个元素

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

        console.log('++++++++')

        // 内层arr.length-1去掉最后一个元素-i是去掉已经找出了几个一次排序的大数

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

            console.log(i, '---', j)

            if (arr[j] > arr[j + 1]) {

                let max = arr[j]

                arr[j] = arr[j + 1]

                arr[j + 1] = max

            }

        }

    }

    return arr

}

console.log("冒泡排序");

console.log(bubbleSort(arrData2));

类似例子

function bubbleSort(arr) {

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

        for (j = 0; j < arr.length; j++) {

            if (arr[j] > arr[j + 1]) {

                let max = arr[j]

                arr[j] = arr[j + 1]

                arr[j + 1] = max

            }

        }

    }

    return arr

}

这样也可以实现,但是做了很多无谓的算力比较

0

评论区