图解算法(五)
散列表
1.散列函數(shù)
散列函數(shù)是這樣的函數(shù),即無論你給它什么數(shù)據(jù),他都還給你一個數(shù)字。散列函數(shù)必須滿足一些要求:
- 它必須是一致的。例如,輸入apple得到的是4,那么每次輸入apple,得到的都必須是4
- 它應將不同的輸入映射到不同的數(shù)字上。
為此,首先創(chuàng)建一個空數(shù)組。我們將在這個數(shù)組中存儲商品的價格。下面來將蘋果的價格加入到這個數(shù)組中。將apple作為輸入交給散列函數(shù),散列函數(shù)輸出為3,因此我們將蘋果的價格存儲在數(shù)組的索引3處。以此類推,填滿整個數(shù)組。
假設(shè)現(xiàn)在我們需要知道apple的價格,我們無需再數(shù)組中查找,只需將apple交給散列函數(shù),輸出3,我們直接在數(shù)組索引3處就能找到apple的價格。
我們結(jié)合散列函數(shù)和數(shù)組創(chuàng)建了一種被稱為散列表的數(shù)據(jù)結(jié)構(gòu)。數(shù)組和鏈表都被直接映射到內(nèi)存,但是散列表更復雜,它使用散列函數(shù)來確定元素的存儲位置。
Python提供了散列表的實現(xiàn),使用函數(shù)dict來創(chuàng)建散列表。
book = dict() book["apple"] = 0.88 print book print book["apple"]2.應用案例
?2.1 將散列表用于查找
?2.2? 防止重復
?2.3 將散列表用作緩存
?
轉(zhuǎn)載于:https://www.cnblogs.com/winddogg/p/10811729.html
總結(jié)
- 上一篇: 那几个题(没懂的地方留言)
- 下一篇: 自定义网络请求框架