mirror of
https://github.com/krahets/hello-algo.git
synced 2026-09-02 13:17:14 +00:00
deploy
This commit is contained in:
@@ -5196,7 +5196,7 @@
|
||||
|
||||
<p>為了解決該問題,我們可以採用<u>懶刪除(lazy deletion)</u>機制:它不直接從雜湊表中移除元素,<strong>而是利用一個常數 <code>TOMBSTONE</code> 來標記這個桶</strong>。在該機制下,<code>None</code> 和 <code>TOMBSTONE</code> 都代表空桶,都可以放置鍵值對。但不同的是,線性探查到 <code>TOMBSTONE</code> 時應該繼續走訪,因為其之下可能還存在鍵值對。</p>
|
||||
<p>然而,<strong>懶刪除可能會加速雜湊表的效能退化</strong>。這是因為每次刪除操作都會產生一個刪除標記,隨著 <code>TOMBSTONE</code> 的增加,搜尋時間也會增加,因為線性探查可能需要跳過多個 <code>TOMBSTONE</code> 才能找到目標元素。</p>
|
||||
<p>為此,考慮線上性探查中記錄遇到的首個 <code>TOMBSTONE</code> 的索引,並將搜尋到的目標元素與該 <code>TOMBSTONE</code> 交換位置。這樣做的好處是當每次查詢或新增元素時,元素會被移動至距離理想位置(探測起始點)更近的桶,從而最佳化查詢效率。</p>
|
||||
<p>為此,考慮在線性探查中記錄遇到的首個 <code>TOMBSTONE</code> 的索引,並將搜尋到的目標元素與該 <code>TOMBSTONE</code> 交換位置。這樣做的好處是當每次查詢或新增元素時,元素會被移動至距離理想位置(探測起始點)更近的桶,從而最佳化查詢效率。</p>
|
||||
<p>以下程式碼實現了一個包含懶刪除的開放定址(線性探查)雜湊表。為了更加充分地使用雜湊表的空間,我們將雜湊表看作一個“環形陣列”,當越過陣列尾部時,回到頭部繼續走訪。</p>
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="2:14"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><input id="__tabbed_2_3" name="__tabbed_2" type="radio" /><input id="__tabbed_2_4" name="__tabbed_2" type="radio" /><input id="__tabbed_2_5" name="__tabbed_2" type="radio" /><input id="__tabbed_2_6" name="__tabbed_2" type="radio" /><input id="__tabbed_2_7" name="__tabbed_2" type="radio" /><input id="__tabbed_2_8" name="__tabbed_2" type="radio" /><input id="__tabbed_2_9" name="__tabbed_2" type="radio" /><input id="__tabbed_2_10" name="__tabbed_2" type="radio" /><input id="__tabbed_2_11" name="__tabbed_2" type="radio" /><input id="__tabbed_2_12" name="__tabbed_2" type="radio" /><input id="__tabbed_2_13" name="__tabbed_2" type="radio" /><input id="__tabbed_2_14" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Python</label><label for="__tabbed_2_2">C++</label><label for="__tabbed_2_3">Java</label><label for="__tabbed_2_4">C#</label><label for="__tabbed_2_5">Go</label><label for="__tabbed_2_6">Swift</label><label for="__tabbed_2_7">JS</label><label for="__tabbed_2_8">TS</label><label for="__tabbed_2_9">Dart</label><label for="__tabbed_2_10">Rust</label><label for="__tabbed_2_11">C</label><label for="__tabbed_2_12">Kotlin</label><label for="__tabbed_2_13">Ruby</label><label for="__tabbed_2_14">Zig</label></div>
|
||||
<div class="tabbed-content">
|
||||
@@ -7119,7 +7119,7 @@ aria-label="頁脚"
|
||||
<div class="md-copyright">
|
||||
|
||||
<div class="md-copyright__highlight">
|
||||
Copyright © 2024 krahets<br>The website content is licensed under <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">CC BY-NC-SA 4.0</a>
|
||||
Copyright © 2025 krahets<br>The website content is licensed under <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">CC BY-NC-SA 4.0</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user