當查找一個元素時,要檢查所有的表項,知道找到所需的元素,或者最終發現元素不在表中。不像在連結法中,這裡沒有鍊表,也沒有元素存放在散列表外。在這裡散列表有可能會被填滿,但是裝載因子(動態集合元素/散列槽數)絕對不會大於1。
在開放定址法中,當要插入一個元素時,可以連續地檢查散列表的個各項,直到找到一個空槽來放置這個元素為止。檢查順序可以是線性的,可以是二次的,也可以是再次散列的。
查找關鍵字和插入關鍵字的算法基本上是一樣的。
在開放定址法中,對散列表元素的刪除操作執行起來比較困難。當我們從槽i中刪除關鍵字時,不能僅將NIL置於其中來標識它為空。因為這樣做的話,會導致在插入另外的關鍵字探查過程中,有可能無法檢索某些關鍵字。這裡有一個解決方法,就是在槽i中置一個特定的槽當作空槽,從而可以插入新元素。
1.線性探查給定一個普通的散列函式h’:U->{0,1,2…m-1}(稱為輔助散列函式),線性探查方法採用的散列函式為:h(k,i)=(h’(k)+i) mod m , i=0,1,2,…m-1
給定一個關鍵字k,第一個探查的槽式T(h’(k)),接下來探查下一個槽,知道T[m-1]。
線性探查方法比較容易實現,但存在一個問題,成為一次群集。隨著時間的推移,連續被占用的槽不斷增加,平均查找時間也隨著不斷增加。群集現象很容易出現,這是因為當一個空槽前有i個滿的槽時,該空槽為下一個將被占用的槽的機率是(i+1)/m,連續被占用的槽的序列將會變得越來越長,因而平均查找時間也會隨之增加。2.二次探查(quadratic probing)採用的形式如下:
h(k,i)=(h’(k)+c1i+C2I)modm
其中h’是一個輔助散列函式,c1和c2為輔助常數,i=0,1,…m-1。處事的探查位置為T[h’(k)],後續的探查位置要在此基礎上加上一個偏移量,該偏移量是以二次的方式依賴於探查號i的。如果兩個關鍵字的初始探查位置是相同的,那么他們的後續二次探查的序列也是相同的。這種性質會導致一種程度較輕的群集現象,成為二次群集。3.雙重散列是用在開放定址法的最好方法之一,因為它所產生的排列具有隨機選擇的排列的許多特性。它採用如下形式的散列函式:
h(k,i)=(h1(k)+i*h2(k))modm
其中h1和h2是輔助散列函式。初始探查位置為T[h1(k)],後續的探查位置在此基礎上加上偏移量h2(k)模m。與線性探查和二次探查不同的是,這裡的探查序列以兩種方式依賴於k,因為初始探查位置和偏移量都可能發生變化。
相關詞條
-
線性開型定址散列
線性開型定址散列,也稱開放定址法,有的元素都存放在散列表里,每個表項或包含動態集合的一個元素或者NIL。當查找某個元素時,要系統的檢查所有表項,直到找到...
簡介 方法 衝突 -
方躍法
方躍法,男,1958年3月1日,北京交通大學教授,博士生導師·
主要經歷 研究領域 科研項目 論文著作 社會兼職 -
計算機作業系統[教育部人才培養模式改革和開放教育試點教材]
本書是計算機套用專業技術基礎課教材,講解計算機的重要系統軟體,即計算機作業系統。
基本信息 圖書簡介 圖書目錄 -
存儲器
按字編址;位元組編址:對存儲單元按位元組編址;定址:由地址尋找數據,從對應...
概述 結構組成 分類 工作原理 作用 -
記憶體
,是CPU能直接定址的存儲空間,由半導體器件製成。記憶體的特點是存取速率快...的“定址”(所以,有人也把地址空間稱為定址空間)。 地址空間的大小和物理存儲器...各種記憶體記憶體這裡需要明確的是,我們討論的不同記憶體的概念是建立在定址空間上...
硬體介紹 分類 頻率 發展 其他記憶體 -
操縱系統
的PC可利用Intel-8088處理器(16-bit暫存器)定址,並最多...
發展 作業系統大全 (PDA)作業系統 手機作業系統 其他作業系統 -
微機原理與接口技術[王克義主編書籍]
之間的轉換41.2.5 移碼錶示法51.2.6 4種機器數表示形式的比較和小結61.3 數的定點表示與浮點表示61.3.1 定點表示法61.3.2 浮點表示法71.4 二-十進制編碼101.4.1 二-十進制編碼特點...
書籍信息 內容簡介 圖書目錄 -
算法之道
19311.7.1 開放定址哈希 19311.7.2 開放定址哈希的時間成本 19411.7.3 開放定址下成功搜尋的時間成本 19511.7.4 封閉定址... 293.3.1 遞歸樹法 293.3.2 替換解法 303.3.3 大師解法...
內容簡介 圖書目錄 -
人人都要學理財
哈希算法的碰撞問題 19311.7.1 開放定址哈希 19311.7.2 開放定址哈希的時間成本 19411.7.3 開放定址下成功搜尋的時間... 293.3.1 遞歸樹法 293.3.2 替換解法 303.3.3 大師解法...
內容提要 目錄