zoukankan      html  css  js  c++  java
  • 算法 之 插入排序 的 JS 实现

    话不多说,直接上代码

    let cards=[1,2,7,8,9,0,6,3,7];
    
    let firstCard=cards[0];
    
    for(let i=1;i<cards.length;i++){
    
        let currentCard=cards[i];
    
        let j=i-1;
    
        while(j>-1&&cards[j]>currentCard){
    
            cards[j+1]=cards[j];
    
            j--;
        }
    
        cards[j+1]=currentCard;
    
    }
    
    console.log(cards);

    node运行输出结果:
    这里写图片描述

    对于插入排序的理解,可以想象为打扑克发牌时,玩家边得到牌边对手中牌插入排序的过程。
    以上边的程序来讲解:
    cards就是一堆牌(cards),玩家被发一张牌(currentCard),玩家手中持有的已排好顺序牌(cards[0-j]),let firstCard=cards[0];相当于玩家得到了第一张牌。for(let i=1;i<cards.length;i++)就像从第二张发牌到牌发完。while(j>-1&&cards[j]>currentCard)就是对手中以排好序的牌从右至左与刚得到的牌进行插入判断的过程。当手中有牌(cards[j])大于刚得到的牌(currentCard)就要将cards[j]往后挪一位cards[j+1]=cards[j];但此时还不应插入,因为插入的条件还需要手中的前一个牌j--;cards[j]小于currentCard,也就不满足cards[j]>currentCard自然弹出了循环,在此时,我们就可以将currentCard插入挪位得到的空位cards[j+1]=currentCard;当手中牌都大于currentCard也就是j>-1不满足的情况,手中所有牌依次向后挪一个位置,currentCard自然插入头的位置。

  • 相关阅读:
    ArcObject获取ArcMap默认地理数据库的路径
    标准IO
    进程关系
    进程环境
    C语言基础知识位运算
    Bash 快捷键
    信号
    UNIX系统文件
    进程
    unix 文件属性
  • 原文地址:https://www.cnblogs.com/dbdb/p/7695050.html
Copyright © 2011-2022 走看看