1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. 堆的javascript實現(xiàn)方法

        時間:2020-11-22 10:00:38 JavaScript 我要投稿

        堆的javascript實現(xiàn)方法

          堆的定義

          最大(最。┒咽且豢妹恳粋節(jié)點的鍵值都不小于(大于)其孩子(如果存在)的鍵值的樹。大頂堆是一棵完全二叉樹,同時也是一棵最大樹。小頂堆是一棵完全完全二叉樹,同時也是一棵最小樹。

          另外,記住這兩個概念,對寫代碼太重要了:

          1、父節(jié)點和子節(jié)點的關(guān)系:看定義

          2、完全二叉樹:參考[2]

          基本操作

          1、Build(構(gòu)建堆)

          2、Insert(插入)

          3、Delete(刪除:最小或者最大的那個)

          代碼實現(xiàn)

          首先,寫代碼前有兩個非常重要的點:

          1、用一個數(shù)組就可以作為堆的存儲結(jié)構(gòu),非常簡單而且易操作;

          2、另外同樣因為是數(shù)組作為存儲結(jié)構(gòu),所以父子節(jié)點之間的關(guān)系就能根據(jù)索引就輕松找到對方了。

          對于JavaScript以0作為數(shù)組索引開始,關(guān)系如下:

          nLeftIndex = 2 * (nFatherIndex+1) - 1;nRightIndex = 2* (nFatherIndex+1);

          前面提到注意兩個概念,是有助于理解的.:

          1、因為是數(shù)組,所以父子節(jié)點的關(guān)系就不需要特殊的結(jié)構(gòu)去維護了,索引之間通過計算就可以得到,省掉了很多麻煩。如果是鏈表結(jié)構(gòu),就會復(fù)雜很多;

          2、完全二叉樹的概念可以參考[2],要求葉子節(jié)點從左往右填滿,才能開始填充下一層,這就保證了不需要對數(shù)組整體進行大片的移動。這也是隨機存儲結(jié)構(gòu)(數(shù)組)的短板:刪除一個元素之后,整體往前移是比較費時的。這個特性也導(dǎo)致堆在刪除元素的時候,要把最后一個葉子節(jié)點補充到樹根節(jié)點的緣由

          關(guān)于JavaScript的幾點小結(jié)

          這里是采用面向?qū)ο蟮囊环N實現(xiàn)方法,感覺上不是太優(yōu)雅,不知道還有沒有更好的表示方法和寫法;

          學習了數(shù)組的幾個用法:push和pop的操作太好用了;

          判斷數(shù)組的方式也是臨時從網(wǎng)上搜的(instanceof),印象不深刻,不用的話下次估計還是有可能忘掉。

          參考

          [1]《數(shù)據(jù)結(jié)構(gòu)和算法分析:C語言描述》

          [2]圖解數(shù)據(jù)結(jié)構(gòu)(8)——二叉堆

          [3]數(shù)據(jù)結(jié)構(gòu):堆

        【堆的javascript實現(xiàn)方法】相關(guān)文章:

        1.Javascript到PHP加密通訊的簡單實現(xiàn)方法

        2.javascript的方法

        3.Javascript 繼承實現(xiàn)例子參考

        4.JavaScript類定義原型方法的兩種實現(xiàn)的區(qū)別

        5.Javascript實現(xiàn)跨域的要點分析

        6.使用JavaScript實現(xiàn)Java的List功能

        7.javascript實現(xiàn)貪吃蛇代碼

        8.JavaScript實現(xiàn)網(wǎng)頁刷新代碼段

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>