• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
ʚ猫一ɞ
博客园    首页    新随笔    联系   管理    订阅  订阅
插入排序

插入排序:一个数,与边上的数一 一作比较,从小到大排,还是从大到小排序看个人设计。

 

像抓扑克牌一样,拿着一张扑克,与已在手中的扑克作比较,再放入对应的位置。

 

看下图数组[5,12,31,9,26],比如:前面的循环我们先不看,我们试着先分析A[3]这个位置的数9:

                                                                     9

                                                                     ↓

  我们将9拎起来(9就是我们这次要特别观察的对象),但是数组的位置不要有任何变化,就像这样:最初:[5,12,31,_,26] 。排序排序,我们要有比较才可排序,所以,我们现在将我们手里的这个数9 与数组中的其他数作比较,按习惯,与这个数之前的数作比较。

  

  9与31比:9<31,那么31要到最初9的位置上去,最初31的位置空下来了;   

                  9

                                                         ↓

              [5,12,_,31,26]

 

  9与12比:9<12,那么12要到最初31的位置上去,最初12的位置空下来了;

 

                9

                                                    ↓

              [5,_,12,31,26]

 

  9与5比:5<9,是从小到大的排序,不要动5,将9放入最初12的位置。  

              [5,9,12,31,26]

 

 

从小到大和从大到小的排序,无非就是前小于后还是前大于后的区别。

 

 

 

 

 

 具体代码(可复制):

var a = [5,12,31,9,26];
  for(var i = 1; i<a.length; i++){
    var key = a[i];
    while(key < a[i-1] && i !== -1){
      a[i] = a[i-1];
      i--;
    }
    a[i] = key
  }
  console.log(a)

  

 

var a = [5,12,31,9,26];
  for(var i = 1; i<a.length; i++){
    var key = a[i];
    while(key > a[i-1] && i !== -1){
      a[i] = a[i-1];
      i--;
    }
    a[i] = key
  }
  console.log(a)

  

 

posted on 2020-12-04 15:33  ʚ猫一ɞ  阅读(106)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3