冒泡排序

1.冒泡排序原理
依次比较相邻两个元素大小,把大的放在右边,小的放在左边。

2.设计思路
在这里插入图片描述

  1. 第一次比较:首先将数组第一个元素和第二个元素比较,大的放在右边,小的放在左边。
  2. 第二次比较:将第二个元素和第三个元素比较,大的放在右边,小的放在左边。
  3. 依次进行,第一趟比较完成,最大的一定在最右边。
  4. 第二趟,最右侧元素不参与比较,按照【1】,【2】,【3】步骤,倒数第二大元素就在倒数第二位。
  5. 这样每一趟找出一个最大的数据,每一趟少一个数据参与比较

3.js设计程序

    // 冒泡排序
    const arr = [4, 2, 6, 8, 10, 9]
    function bulleSort(arr) {
        for (var i = 0; i < arr.length - 1; i++) {
            for (var j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    var item = arr[j]
                    arr[j] = arr[j + 1]
                    arr[j + 1] = item
                }
            }
        }
        return arr
    }
   console.log(bulleSort(arr)) 
   //[2, 4, 6, 8, 9, 10]

4.算法分析

  1. 由此可见n个数据排序每一趟需比较(n-1)次,共需要(n-1)趟,双循环算法,外循环代表比较的趟数,内循环代表每趟比较的次数。
  2. 冒泡排序优点,每一趟排完,找出该趟最大值,一定程度上减少了计算量。
  3. 时间复杂度,如果数组是正序排列只需比较n-1次就完成,则时间复杂度是O(n);如果数组是逆序排列的则需要计算(n-1)(n-1)则时间复杂度是O(n2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值