日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

dbeaver导出表结构和数据_python中的哈希表数据结构

發(fā)布時間:2025/4/5 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dbeaver导出表结构和数据_python中的哈希表数据结构 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

散列表(Hash table,也叫哈希表),是根據(jù)關鍵碼值(Key value)而直接進行訪問的數(shù)據(jù)結構。也就是說,它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度。這個映射函數(shù)叫做散列函數(shù),存放記錄的數(shù)組叫做散列表。

python中的dict類型就是哈希表的原理,存儲方式是key-value,通過鍵來快速的訪問value,字典在訪問操作上時間復雜度為O(1)。

用python實現(xiàn)一個簡單的哈希表:key為純數(shù)字作為索引,使用線性表存儲

class HashTable:def __init__(self, size):self.elem = [None for i in range(size)] # 使用list數(shù)據(jù)結構作為哈希表元素保存方法self.count = size # 最大表長def hash(self, key):return key % self.count # 散列函數(shù)采用除留余數(shù)法def insert_hash(self, key, value):"""插入關鍵字到哈希表內(nèi)"""address = self.hash(key) # 求散列地址while self.elem[address]: # 當前位置已經(jīng)有數(shù)據(jù)了,發(fā)生沖突。address = (address + 1) % self.count # 線性探測下一地址是否可用self.elem[address] = value # 沒有沖突則直接保存。def search_hash(self, key):"""查找關鍵字,返回布爾值"""star = address = self.hash(key)while self.elem[address] != key:address = (address + 1) % self.countif not self.elem[address] or address == star: # 說明沒找到或者循環(huán)到了開始的位置return Falsereturn True

若關鍵字為k,則其值存放在f(k)的存儲位置上。由此,不需比較便可直接取得所查記錄。稱這個對應關系f為散列函數(shù),按這個思想建立的表為散列表。

對不同的關鍵字可能得到同一散列地址,即k1≠k2,而f(k1)=f(k2),這種現(xiàn)象稱為沖突(英語:Collision)。具有相同函數(shù)值的關鍵字對該散列函數(shù)來說稱做同義詞。綜上所述,根據(jù)散列函數(shù)f(k)和處理沖突的方法將一組關鍵字映射到一個有限的連續(xù)的地址集(區(qū)間)上,并以關鍵字在地址集中的“像”作為記錄在表中的存儲位置,這種表便稱為散列表,這一映射過程稱為散列造表或散列,所得的存儲位置稱散列地址。

若對于關鍵字集合中的任一個關鍵字,經(jīng)散列函數(shù)映象到地址集合中任何一個地址的概率是相等的,則稱此類散列函數(shù)為均勻散列函數(shù)(Uniform Hash function),這就是使關鍵字經(jīng)過散列函數(shù)得到一個“隨機的地址”,從而減少沖突。

總結

以上是生活随笔為你收集整理的dbeaver导出表结构和数据_python中的哈希表数据结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。