看乙個實際需求,google公司的乙個上機題:
有乙個公司
,當有新的員工來報道時
,要求將該員工的資訊加入
(id,性別,
年齡,住址..),
當輸入該員工的id時
,要求查詢到該員工的 所有資訊.
要求:
不使用資料庫
,盡量節省記憶體
,速度越快越好
=>
雜湊表(雜湊)
雜湊表(hash table
,也叫雜湊表),是根據關鍵碼值
(key value)
而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中一
個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的
陣列叫做雜湊表
//如果不是第乙個雇員,則使用乙個輔助的指標,幫助定位到最後
emp curemp = head;
while(true)
curemp = curemp.next; //後移
}//退出時直接將emp 加入鍊錶
curemp.next = emp;
}//遍歷鍊錶的雇員資訊
public void list(int no)
system.out.print("第 "+(no+1)+" 鍊錶的資訊為");
emp curemp = head; //輔助指標
while(true)
curemp = curemp.next; //後移,遍歷
}system.out.println();
}//根據id查詢雇員
//如果查詢到,就返回emp, 如果沒有找到,就返回null
public emp findempbyid(int id)
//輔助指標
emp curemp = head;
while(true)
//退出
if(curemp.next == null)
curemp = curemp.next;// 後移判斷下乙個id
}return curemp;}}
public int hashfun(int id)
建立hashtable
class hashtab
}//新增雇員
public void add(emp emp)
//遍歷所有的鍊錶,遍歷hashtab
public void list()
}//根據輸入的id,查詢雇員
public void findempbyid(int id) else
}//編寫雜湊函式, 使用乙個簡單取模法更具id分配到不同列表中
public int hashfun(int id)
}
Hash表的資料結構
hashmap與hashset的結構是差不多的,以陣列作為桶,每個桶中裝的是鍊錶,當鍊表的元素超過8個時桶中的元素自動轉為紅黑樹儲存。hashmap與hashset的預設負載因子為0.75,當hash表中的元素超過陣列長度乘以負載因子的積時會擴容,通過呼叫resize 實現,一般是擴容一倍。使用乙個...
資料結構之hash表
1.查詢的資料是表式結構,可以想象成是資料庫裡的表 2.查詢的目的是找出表中關鍵字與給定關鍵字相等的資料行 3.雜湊表就是定義了每乙個資料行的行號 4.雜湊演算法就是 行號 f 關鍵字 所以在雜湊表裡查詢資料時,不需要把給定關鍵字與每一行的關鍵字比較是否相等來找到行號,而是直接由給定的關鍵字計算出行...
資料結構之雜湊(hash)表
最近看php陣列底層結構,用到了雜湊表,所以還是老老實實回去看結構,在這裡去總結一下。這裡先說一下雜湊 hash 表的定義 雜湊表是一種根據關鍵碼去尋找值的資料對映結構,該結構通過把關鍵碼對映的位置去尋找存放值的地方,說起來可能感覺有點複雜,我想我舉個例子你就會明白了,最典型的的例子就是字典,大家估...