zoukankan      html  css  js  c++  java
  • 数组排序

    冒泡排序示意图

    冒泡排序程序

     1     var arr = [4,2,5,7,8,2,1]
     2     console.log(arr)
     3     // 用冒泡排序从小到大
     4     // 总共有arr.length个数,每一趟都能确定一个最大值,但是最后一个不需要比较
     5     // 所以总共要比较arr.length-1趟  0 ~ length-2
     6     // 5  4 0~3
     7     for (var i = 0; i < arr.length - 1; i++) {
     8       // 当前第i趟要比较的次数
     9       // arr.length   i    比较次数
    10       //    5         0       4
    11       //    5         1       3
    12       //    5         2       2
    13       // arr.length   i    arr.length - i - 1
    14       for (var j = 0; j < arr.length - i - 1; j++) {
    15         // 相邻的两个数来比较 arr[j]和arr[j+1]
    16         if (arr[j] > arr[j+1]) {
    17           // 交换
    18           var temp = arr[j]
    19           arr[j] = arr[j+1]
    20           arr[j+1] = temp
    21         }
    22       }
    23     }
    24     console.log(arr)

    选择排序示意图

    选择排序程序

     1     // 每一趟循环能确定当前的最小值,总的循环趟数arr.length-1
     2     for (var i = 0; i < arr.length - 1; i++) {
     3       // 先假设当前最小值的索引为i
     4       var min = i
     5       // 用假设的最小值跟后面的值一一比较
     6       // 如果遇到后面的值比假设的最小值还要小,说明假设错误
     7       // 最小值的索引应该重新赋值为后面小值的索引
     8       // 一趟结束以后就可以得到最小索引,这个时候再交换
     9 
    10       // 内层循环从i+1开始,每一趟都要比较到最后一个,所以到arr.length-1结束
    11       for (var j = i + 1; j < arr.length; j++) {
    12         // 判断arr[min]是否大于arr[j],如果大于了,说明arr[j]才是最小值
    13         // min就应该重新赋值为j
    14         if (arr[min] > arr[j]) {
    15           min = j
    16         }
    17       }
    18       // 内层循环结束以后,当前这一趟的最小值就被找到了
    19       // 让arr[i]和arr[min]交换
    20       // 如果i和min相等,那么就没有交换的必要了
    21       if (i != min) {
    22         var temp = arr[i]
    23         arr[i] = arr[min]
    24         arr[min] = temp
    25       }
    26     }

    睡眠排序:

     1     <script>
     2         var arr = [5,3,56,34,57,2,44,5]
     3         var arr1 = []
     4         arr.forEach(item => {
     5             setTimeout(function(){
     6                 arr1.push(item)
     7             },item)
     8         })
     9         console.log(arr1)
    10     </script>
  • 相关阅读:
    ROS 八叉树地图构建
    2020
    Ubuntu 16.04 配置开机自动挂载 NTFS 机械硬盘!
    从 0 开始机器学习
    Ubuntu Install kitti2bag
    Ubuntu install sublime-text3
    Ubuntu 修复不能访问正确挂载机械硬盘的问题
    Ubuntu 16.04 安装 NVIDIA 显卡驱动!
    ROS 机器人技术
    phpMyAdmin getshell 学习
  • 原文地址:https://www.cnblogs.com/strongerPian/p/12683255.html
Copyright © 2011-2022 走看看