前言:本筆記僅僅只是對內容的整理和自行消化,并不是完整內容,如有侵權,聯系立刪。
一、哈希表初步
在之前的學習中,我們使用數組、字符串、鏈表等等,假如需要找到某個節點,則都要從頭開始,逐一比較,直到找到為止。為了能夠直接通過要查找的記錄找到其存儲位置,我們選擇使用哈希表實現此功能。哈希表其實就是通過一個關鍵碼 key 的值而直接進行訪問的數據結構。
哈希表的作用是快速判斷一個元素是否出現在集合,它通過在關鍵碼和存儲位置之間建立一個確定的對應關系 F(key) ,使得每個關鍵字 key 對應一個存儲位置,而這個對應關系,稱之為散列函數(哈希函數)。哈希表來解決問題的時候,一般選擇以下三種數據結構:數組、集合、映射。
二、最簡單的一個數組案例
下面我們來看一個有哈希思想的程序案例,但實質上這個程序和哈希表的應用關系不大。主要是幫助我們理解哈希表是什么,它的核心思想是什么。
對于這個問題,我們可以這樣想:想要找出出現頻率最高的字母,我們至少需要遍歷一遍整個字符串,因此盡可能在這一遍中完成所有任務。
為了實現這個目的,我們可以將26個字母按次序存儲在一個數組中,而數組的索引和字母實現了一一對應