gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

javascript hash是什么

在javascript中,hash指的是哈希表,是一種根據關鍵字直接訪問內存存儲位置的數據結構;通過哈希表,數據元素的存放位置和數據元素的關鍵字之間建立起某種對應關系,建立這種對應關系的函數稱為哈希函數。

javascript hash是什么

本教程操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

javascript hash的基本概念:

哈希表(hash table )是一種根據關鍵字直接訪問內存存儲位置的數據結構,通過哈希表,數據元素的存放位置和數據元素的關鍵字之間建立起某種對應關系,建立這種對應關系的函數稱為哈希函數。
javascript hash是什么
哈希表的構造方法:

假設要存儲的數據元素個數是n,設置一個長度為m(m > n)的連續存儲單元,分別以每個數據元素的關鍵字Ki(0<=i<=n-1)為自變量,通過哈希函數hash(Ki),把Ki映射為內存單元的某個地址hash(Ki),并將數據元素存儲在內存單元中。

從數學的角度看,哈希函數實際上是關鍵字到內存單元的映射,因此我們希望通過哈希函數通過盡量簡單的運算使得哈希函數計算出的花溪地址盡量均勻的背影射到一系列的內存單元中,構造哈希函數有三個要點:(1)運算過程要盡量簡單高效,以提高哈希表的插入和檢索效率;(2)哈希函數應該具有較好的散列型,以降低哈希沖突的概率;第三,哈希函數應具有較大的壓縮性,以節省內存。

常用方法:

  • 直接地址法:以關鍵字的某個線性函數值為哈希地址,可以表示為hash(K)=aK+C;優點是不會產生沖突,缺點是空間復雜度可能會較高,適用于元素較少的情況。
  • 除留余數法:它是由數據元素關鍵字除以某個常數所留的余數為哈希地址,該方法計算簡單,適用范圍廣,是經常使用的一種哈希函數,可以表示為:
    hash(K=K mod C;該方法的關鍵是常數的選取,一般要求是接近或等于哈希表本身的長度,研究理論表明,該常數選素數時效果最好
  • 數字分析法:該方法是取數據元素關鍵字中某些取值較均勻的數字來作為哈希地址的方法,這樣可以盡量避免沖突,但是該方法只適合于所有關鍵字已知的情況,對于想要設計出更加通用的哈希表并不適用。
  • 平方求和法:對當前字串轉化為Unicode值,并求出這個值的平方,去平方值中間的幾位為當前數字的hash值,具體取幾位要取決于當前哈希表的大小。
  • 分段求和法:根據當前哈希表的位數把所要插入的數值分成若干段,把若干段進行相加,舍去調最高位結果就是這個值的哈希值。

哈希沖突的解決方案:

在構造哈希表時,存在這樣的問題:對于兩個不同的關鍵字,通過我們的哈希函數計算哈希地址時卻得到了相同的哈希地址,我們將這種現象稱為哈希沖突。

javascript hash是什么

哈希沖突主要與兩個因素有關

(1)填裝因子,填裝因子是指哈希表中已存入的數據元素個數與哈希地址空間的大小的比值,a=n/m ; a越小,沖突的可能性就越小,相反則沖突可能性較大;但是a越小空間利用率也就越小,a越大,空間利用率越高,為了兼顧哈希沖突和存儲空間利用率,通常將a控制在0.6-0.9之間,而.net中的HashTable則直接將a的最大值定義為0.72 (雖然微軟官方MSDN中聲明HashTable默認填裝因子為1.0,但實際上都是0.72的倍數)
(2)與所用的哈希函數有關,如果哈希函數得當,就可以使哈希地址盡可能的均勻分布在哈希地址空間上,從而減少沖突的產生,但一個良好的哈希函數的得來很大程度上取決于大量的實踐。

1)開放定址法

Hi=(H(key) + di) MOD m i=1,2,…k(k<=m-1)
其中H(key)為哈希函數;m為哈希表表長;di為增量序列。有3中增量序列:
①線性探測再散列:di=1,2,3,…,m-1
②二次探測再散列:di=12,-12,22,-22,…±k^2(k<=m/2)
③偽隨機探測再散列:di=偽隨機數序列

缺點:

我們可以看到一個現象:當表中i,i+1,i+2位置上已經填有記錄時,下一個哈希地址為i,i+1,i+2和i+3的記錄都將填入i+3的位置,這種在處理沖突過程中發生的兩個第一個哈希地址不同的記錄爭奪同一個后繼哈希地址的現象稱為“二次聚集”,即在處理同義詞的沖突過程中又添加了非同義詞的沖突。但另一方面,用線性探測再散列處理沖突可以保證做到:只要哈希表未填滿,總能找到一個不發生沖突的地址Hk。而二次探測再散列只有在哈希表長m為形如4j+3(j為整數)的素數時才可能。即開放定址法會造成二次聚集的現象,對查找不利。

javascript hash是什么
2)再哈希法

Hi = RHi(key),i=1,2,…k RHi均是不同的哈希函數,即在同義詞產生地址沖突時計算另一個哈希函數地址,直到不發生沖突為止。這種方法不易產生聚集,但是增加了計算時間。

缺點:增加了計算時間。

3)鏈地址法(拉鏈法)

將所有關鍵字為同義詞的記錄存儲在同一線性鏈表中。

優點:

①拉鏈法處理沖突簡單,且無堆積現象,即非同義詞決不會發生沖突,因此平均查找長度較短;
②由于拉鏈法中各鏈表上的結點空間是動態申請的,故它更適合于造表前無法確定表長的情況;
③開放定址法為減少沖突,要求裝填因子α較小,故當結點規模較大時會浪費很多空間。而拉鏈法中可取α≥1,且結點較大時,拉鏈法中增加的指針域可忽略不計,因此節省空間;
④在用拉鏈法構造的散列表中,刪除結點的操作易于實現。只要簡單地刪去鏈表上相應的結點即可。而對開放地址法構造的散列表,刪除結點不能簡單地將被刪結 點的空間置為空,否則將截斷在它之后填人散列表的同義詞結點的查找路徑。這是因為各種開放地址法中,空地址單元(即開放地址)都是查找失敗的條件。因此在 用開放地址法處理沖突的散列表上執行刪除操作,只能在被刪結點上做刪除標記,而不能真正刪除結點。

缺點:

拉鏈法的缺點是:指針需要額外的空間,故當結點規模較小時,開放定址法較為節省空間,而若將節省的指針空間用來擴大散列表的規模,可使裝填因子變小,這又減少了開放定址法中的沖突,從而提高平均查找速度。

javascript hash是什么

4)建立一個公共溢出區

假設哈希函數的值域為[0,m-1],則設向量HashTable[0…m-1]為基本表,每個分量存放一個記錄,另設立向量OverTable[0…v]為溢出表。所有關鍵字和基本表中關鍵字為同義詞的記錄,不管他們由哈希函數得到的哈希地址是什么,一旦發生沖突,都填入溢出表。

一個簡單哈希函數不做沖突處理的哈希表實現

class Hash {   constructor() {     this.table = new Array(1024);   }   hash(data) {     //就將字符串中的每個字符的ASCLL碼值相加起來,再對數組的長度取余     var total = 0;     for (var i = 0; i < data.length; i++) {       total += data.charCodeAt(i);     }     console.log("Hash Value: " + data + " -> " + total);     return total % this.table.length;   }   insert(key, val) {     var pos = this.hash(key);     this.table[pos] = val;   }   get(key) {     var pos = this.hash(key);     return this.table[pos]   }   show() {     for (var i = 0; i < this.table.length; i++) {       if (this.table[i] != undefined) {         console.log(i + ":" + this.table[i]);       }     }   } } var someNames = ["David", "Jennifer", "Donnie", "Raymond", "Cynthia", "Mike", "Clayton", "Danny", "Jonathan"]; var hash = new Hash(); for (var i = 0; i < someNames.length; ++i) {   hash.insert(someNames[i], someNames[i]); }  hash.show();

javascript hash是什么
采用的是平方取中法構建哈希函數,開放地址法線性探測法進行解決沖突。

class Hash {   constructor() {     this.table = new Array(1000);   }   hash(data) {     var total = 0;     for (var i = 0; i < data.length; i++) {       total += data.charCodeAt(i);     }     //把字符串轉化為字符用來求和之后進行平方運算     var s = total * total + ""     //保留中間2位     var index = s.charAt(s.length / 2 - 1) * 10 + s.charAt(s.length / 2) * 1     console.log("Hash Value: " + data + " -> " + index);     return index;   }   solveClash(index, value) {     var table = this.table     //進行線性開放地址法解決沖突     for (var i = 0; index + i < 1000; i++) {       if (table[index + i] == null) {         table[index + i] = value;         break;       }     }   }   insert(key, val) {     var index = this.hash(key);     //把取中當做哈希表中索引     if (this.table[index] == null) {       this.table[index] = val;     } else {       this.solveClash(index, val);     }   }   get(key) {     var pos = this.hash(key);     return this.table[pos]   }   show() {     for (var i = 0; i < this.table.length; i++) {       if (this.table[i] != undefined) {         console.log(i + ":" + this.table[i]);       }     }   } } var someNames = ["David", "Jennifer", "Donnie", "Raymond", "Cynthia", "Mike", "Clayton", "Danny", "Jonathan"]; var hash = new Hash(); for (var i = 0; i < someNames.length; ++i) {   hash.insert(someNames[i], someNames[i]); }  hash.show();

javascript hash是什么

【推薦學習:javascript高級教程】

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
亚洲少妇久久久| 在线观看免费av网址| 色欲色香天天天综合网www| 99久久久精品视频| 免费超爽大片黄| 国产av无码专区亚洲精品| 中文字幕成人在线视频| 男人的天堂成人| aa视频在线播放| 亚洲第一中文av| 欧美性受xxxx黒人xyx性爽| 激情六月天婷婷| 波多野结衣50连登视频| 国产一级片自拍| 乱熟女高潮一区二区在线| 成人在线观看a| 在线免费黄色网| 浮妇高潮喷白浆视频| 交换做爰国语对白| 欧美污视频网站| 国产 国语对白 露脸 | 秋霞在线一区二区| 丝袜老师办公室里做好紧好爽 | 国产精品探花在线播放| 九九爱精品视频| 久久综合在线观看| 狠狠97人人婷婷五月| 日韩人妻精品一区二区三区| 欧美成人xxxxx| 伊人久久在线观看| 国产一伦一伦一伦| 国产精品久久中文字幕| 五月花丁香婷婷| 哪个网站能看毛片| www.射射射| 99热一区二区三区| 国产无色aaa| 91极品尤物在线播放国产| 少妇av一区二区三区无码| 欧美一级黄色录像片| 欧美精品性生活| 97视频在线免费播放| 日本大片免费看| 四虎精品欧美一区二区免费| 最新天堂在线视频| 爱情岛论坛成人| 激情五月开心婷婷| 日韩人妻精品无码一区二区三区| 永久免费看av| 色男人天堂av| 日本三级中文字幕在线观看| 五月天中文字幕在线| 另类小说第一页| 亚洲成人福利在线观看| 日本新janpanese乱熟| 日本熟妇人妻xxxxx| aⅴ在线免费观看| 国产女女做受ⅹxx高潮| 久草在在线视频| 日本va中文字幕| 亚洲天堂网一区| 久久国产这里只有精品| 搡女人真爽免费午夜网站| 能在线观看的av网站| 亚洲欧美自拍另类日韩| 自拍偷拍一区二区三区四区| 91 视频免费观看| 黄色片免费在线观看视频| 男人c女人视频| 久久网站免费视频| 国产裸体免费无遮挡| 免费成年人高清视频| 特级毛片在线免费观看| 狠狠干视频网站| 91丨porny丨探花| 国产又黄又猛又粗又爽的视频| 天天爽夜夜爽一区二区三区| 特级西西444www| 欧美日韩福利在线| www.99在线| 成人手机视频在线| 又粗又黑又大的吊av| 污污网站免费看| 看全色黄大色大片| 成人av一级片| 超碰中文字幕在线观看| 日韩一级性生活片| 啊啊啊国产视频| 无码毛片aaa在线| 日本熟妇人妻xxxxx| 99热都是精品| 久久精品网站视频| 一级黄色高清视频| 欧美韩国日本在线| 大陆极品少妇内射aaaaaa| 99福利在线观看| 国产在线视频在线| 亚洲最大成人在线观看| 国产亚洲黄色片| www.51色.com| 日韩精品一区二区三区不卡| 国产树林野战在线播放| aaa毛片在线观看| 久久福利一区二区| 中文字幕在线导航| 欧美一级在线看| 91免费视频黄| 久久国产精品国产精品| 欧美精品99久久| 先锋影音男人资源| 午夜剧场在线免费观看| 激情综合在线观看| 69sex久久精品国产麻豆| 亚洲理论中文字幕| 亚洲视频一二三四| 牛夜精品久久久久久久| 欧美韩国日本在线| 免费欧美一级视频| 国产午夜福利100集发布| 在线观看免费黄色片| 天天综合天天添夜夜添狠狠添| 黄色片一级视频| 鲁一鲁一鲁一鲁一色| 欧美国产视频一区| 国内精品国产三级国产99| 91亚洲一区二区| xxx中文字幕| 老司机av福利| 婷婷视频在线播放| 香蕉视频xxxx| 黄瓜视频免费观看在线观看www | 91蝌蚪视频在线观看| 男人亚洲天堂网| 成人午夜视频免费在线观看| 少妇高潮喷水久久久久久久久久| 无码专区aaaaaa免费视频| 天天夜碰日日摸日日澡性色av| 人妻av中文系列| 国产精品一区二区免费在线观看| 欧美亚洲一二三区| av免费中文字幕| 日日干夜夜操s8| 国产在线观看中文字幕| 福利网在线观看| 日韩xxxx视频| 欧美丰满熟妇xxxxx| 拔插拔插华人永久免费| 九九九久久久久久久| 国内少妇毛片视频| 国产精品欧美激情在线观看| 国产又大又黄又猛| 国产又粗又爽又黄的视频| 91九色丨porny丨国产jk| www黄色av| 久久精品国产99久久99久久久| av动漫在线播放| 黄色一级视频片| 97人人爽人人| www.夜夜爱| 99蜜桃臀久久久欧美精品网站| 黄色在线视频网| 国产精品www在线观看| 免费激情视频在线观看| www.久久com| 中国丰满人妻videoshd| 天堂av手机在线| 欧美视频第一区| 久久最新免费视频| 精品人妻一区二区三区四区在线 | 久久亚洲a v| 黄色片一级视频| 久久综合亚洲精品| 精品久久久久久久无码 | 丰满少妇大力进入| 免费一级特黄录像| 五月丁香综合缴情六月小说| 天天干天天色天天干| 日韩精品 欧美| 天天操天天干天天玩| 欧美成人黑人猛交| 黄色a级片免费看| 99久久99精品| 国产天堂在线播放| 欧美一级免费播放| 麻豆中文字幕在线观看| 日韩av片网站| 欧美三级一级片| 日韩精品视频在线观看视频| 爽爽爽在线观看| 一区二区在线播放视频| 国产成人无码a区在线观看视频| 性生生活大片免费看视频| 色综合av综合无码综合网站| 免费看欧美黑人毛片| 美国av在线播放| 污污的网站免费| 五月天婷婷激情视频| 国产女女做受ⅹxx高潮| 精品久久一二三| 日本男女交配视频|