JS-数组冒泡排序与选择排序算法

数组冒泡排序算法

  • 排序算法:将数组中的数据按照升序或降序重新排序
  • 数组冒泡排序实现
    1. 循环数组,数组数据前后两两比较大小,如果前一个比后一个更大则交换位置
      • 那么执行一次后数组的最后一个数据一定是最大值
    2. 后续重复执行步骤1,最终数组排序完成
      • 最多执行数组长度-1次步骤1,即可完成数组排序
var = [3, 1, 5, 8, 6, 4, 9, 7, 2];

// 使用for循环执行步骤1
for (var j = 1; j <= arr.length - 1; j++) {
    // 循环中j表示第几次执行步骤1
    // 步骤1代码
    for (var i = 0; i < arr.length - j; i++) {
        if (arr[i] > arr[i + 1]) { // 前一个比后一个更大
            // 交换位置
            var tmp = arr[i];
            arr[i] = arr[i + 1];
            arr[i + 1] = tmp;
        }
    }
}

console.log(arr); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

数组选择排序算法

  • 数组选择排序实现
    • 步骤1:
      • 假设第一个数据[0]为最小值,并将[0]的索引记录在变量minIndex
      • [1]开始遍历数组,逐个与[minIndex]的值比较大小,将值更小的的索引记录在minIndex
        • 遍历完毕后,minIndex中记录的一定是最小值的索引
      • 判断minIndex中的值是否是假设的[0]的索引
        • 如果不是则[0][minIndex]交换位置
      • 完成后[0]一定是最小值
    • 后续重复执行步骤1,最终数组排序完成(前提每一轮假设索引依次递增)
      • 注意:
        • 第一次执行步骤1假设[0]是最小值,从[1]开始遍历数组
        • 第二次执行步骤1假设[1]是最小值,从[2]开始遍历数组
        • 第三次执行步骤1假设[2]是最小值,从[3]开始遍历数组
        • 第四次执行步骤1假设[3]是最小值,从[4]开始遍历数组
        • 最多重复步骤1数组长度-1次
var arr = [3, 1, 5, 8, 6, 4, 9, 7, 2];

// 使用for循环执行步骤1
for (var j = 0; j < arr.length - 1; j++) {
    // 循环中j表示第j+1次执行步骤1
    // 本次假设[j]为arr的最小值
    var minIndex = j;
    // 步骤1代码
    for (var i = minIndex + 1; i < arr.length; i++) {
        // 判断arr[i]是否小于arr[minIndex],若小于则将i记录在minIndex中
        if (arr[i] < arr[minIndex]) minIndex = i;
    }
    // 判断minIndex与j是否一致
    if (minIndex != j) {
        // 交换位置
        var tmp = arr[j];
        arr[j] = arr[minIndex];
        arr[minIndex] = tmp;
    }
}

console.log(arr); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Turbosaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值