冒泡排序、选择排序

冒泡排序

按照冒泡排序的思想,我们要把相邻的元素两两比较,当一个元素大于右侧相元素时,交换它们的位置;当一个元素小于或等于右侧相邻元素时,位置不变

大的往右丢(往下沉),小的往左排

image-20200730185547751

  • 外层循环控制趟数
  • 内层循环控制每一趟的交换次数
  • 内部交换两个变量的值

image-20200805120922422

内层for循环 第一趟的索引号是0 交换次数是4

内层for循环 第二趟的索引号是1 交换次数是3

内层for循环 第三趟的索引号是2 交换次数是2

内层for循环 第四趟的索引号是3 交换次数是1

  • image-20200730230353196

image-20200730190418228

image-20200805115329377

细节优化:

image-20200805115612895

// 优化1 arr.length-1
for(var i = 0;i<arr.length-1;i++){
   for(var j = 0;j<arr.length-1;j++){
       
   } 
}

//优化2  减去多余的比较次数  arr.length-1-i
for(var i = 0;i<arr.length-1;i++){
   for(var j = 0;j<arr.length-1-i;j++){
       
   } 
}

选择排序

image-20200805150458986

// 选择排序

    // 拿第一个值和后面的值,进行比较
    var list = [83, 41, 71, 45, 79];

    // 第一轮结束之后最小的值,放在最前面
    for (var i = 0; i < list.length - 1; i++) {
        // 假设一个i为最小值
        // 内层循环,控制每层做什么操作(拿本次选取的值,与后面的值比较)
        for (var j = i + 1; j < list.length; j++) {
            // 如果前面的值,比后面的大,放到最后
            if (list[i] > list[j]) {
                 // 交换位置
                var temp = list[i];
                list[i] = list[j];
                list[j] = temp;
            }

        }
    }
    console.log('选择排序如下' + list);

选择排序优化

var list = [83, 41, 71, 45, 79];

        // 第一轮,找到最小的值,放到下标为0的位置
        // 第二轮,找到第二小的值,放到下标为1的位置
        // n个数,找n-1次
        var min = list[i];// 假设最小值list[i]
        var minIndex =i; // 假设最小值下标

        for (var i = 0; i < list.length - 1; i++) {
        for (var j = i + 1; j < list.length; j++) {
            if (list[j] < list[minIndex]) {
                // min = list[j];
                minIndex = j;
            }

        }
    }

    var temp = list[i];
    list[i] = list[minIndex];
    list[minIndex] = temp;

    console.log('选择排序如下' + list);

相关推荐

  1. 选择排序冒泡排序

    2024-06-18 17:48:02       15 阅读
  2. 冒泡排序选择排序--C语言

    2024-06-18 17:48:02       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-18 17:48:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-18 17:48:02       20 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-18 17:48:02       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-18 17:48:02       20 阅读

热门阅读

  1. Git 的基本概念和使用方式。

    2024-06-18 17:48:02       5 阅读
  2. Python写UI自动化--playwright的运行模式

    2024-06-18 17:48:02       5 阅读
  3. 编程输出中间变量:深度解析与实战应用

    2024-06-18 17:48:02       5 阅读
  4. 微信小程序地图案例

    2024-06-18 17:48:02       6 阅读
  5. C# OpenCvSharp函数形参-Size

    2024-06-18 17:48:02       7 阅读
  6. Linux 常用命令 - stat 【显示文件状态信息】

    2024-06-18 17:48:02       5 阅读
  7. 串口触摸屏的键盘控制

    2024-06-18 17:48:02       6 阅读
  8. 【杂记-浅谈OSPF协议中的RouterDeadInterval】

    2024-06-18 17:48:02       7 阅读