<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                跳躍表skiplist 1.結構理解 ?1).對于一個單鏈表來講,即便鏈表中存儲的數據是有序的,如果我們要想在其中查找某個數據,也只能從頭到尾遍歷鏈表。這樣查找效率就會很低,時間復雜度會很高,是 O(n)。 ![](https://img.kancloud.cn/ab/9e/ab9e03b26435d40333b99b95442ecb04_1986x700.png) 2).如果我們想要提高其查找效率,可以考慮在鏈表上建索引的方式。每兩個結點提取一個結點到上一級,我們把抽出來的那一級叫作索引 這個時候,我們假設要查找節點8,我們可以先在索引層遍歷,當遍歷到索引層中值為 7 的結點時,發現下一個節點是9,那么要查找的節點8肯定就在這兩個節點之間。我們下降到鏈表層繼續遍歷就找到了8這個節點 ![](https://img.kancloud.cn/58/f7/58f726b65918a2fe10194b5bcb197a6f_2194x676.png) 3)當有大量的數據時,我們可以增加多級索引,其查找效率可以得到明顯提升,像這種鏈表加多級索引的結構,就是跳躍表! ![](https://img.kancloud.cn/b2/2c/b22cae1ce76cd0c437324b0f179d1c3e_2969x1064.png) 2.結構解讀 ![](https://img.kancloud.cn/1e/ed/1eedb9eb5c2304dac85c8ad428c27473_887x706.png) 1)跳躍表的結構(zskiplist) ![](https://img.kancloud.cn/b1/a2/b1a2ddccf640b64c2dd1ebd1b5d33cf7_909x346.png) * header和tail指針分別指向跳躍表的表頭和表尾節點; * length屬性記錄節點的數量; * level屬性記錄層數最高的幾點的層數量; 2)跳躍表節點的結構(zskiplistNode) ![](https://img.kancloud.cn/73/2d/732dc689163a2179439710e6ca4bf9f0_1078x610.png) * 層:跳躍表節點的 level\[\] 數組可以包含多個元素,每個元素都包含一個指向其他節點的指針 和 跨度,下標從0開始為第一層; * 前進指針:每個層都有一個指向表尾方向的前進指針,用于從表頭向表尾方向訪問節點; *跨度:層的跨度用于記錄兩個節點之間的距離,指向NULL的所有前進指針的跨度為0;跨度用來計算節點的排位:在查找某個節點的過程中,將沿途訪問過的所有層的跨度累計起來,得到的結果就是目標節點在跳躍表中的排位。 *后退指針:后退指針用于從表尾向表頭方向訪問節點,每次只能后退一個節點; * 分值和成員: *分值:一個double類型的浮點數,所有節點都按照分值從小到大排序,多個節點可以包含相同的分值; *成員:一個指針,指向一個字符串對象,該字符串對象保存著一個SDS值,成員對象必須是唯一的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看