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自然插入头的位置。

  • 相关阅读:
    poj2192
    poj2002
    poj2190
    poj2001
    poj2195
    自我成长:20岁到40岁的简单人生规划
    最容易让人失恋的十种职业
    职场发展的5W问题(对我影响很大)
    你个人知识管理了吗?
    安慰人的10大原则——当不知该说什么时
  • 原文地址:https://www.cnblogs.com/dbdb/p/7695050.html
Copyright © 2011-2022 走看看