hash個人總結c++

哈希算法

定義hash函數使狀態轉移爲數字,但有可能多個狀態的hash值相同,稱其爲衝突。用hash表來解決衝突。

int find(int k)
{
	Int h = hash(k);
	Int p = first[h];
	While (p)
	{
		if(key[p] == k) return p;
		p = next [p];
	}
	return 0;
}
void insert(int x)
{
	Int h = hash(key[x]);
	next[x] = first[h];
	first[h] = x;
}
運用hash在dfs和bfs中判重比較方便,但要注意hash的效率,不要造成使用hash效率反而更低的情況,主要考慮因素爲每次取hash值的運算次數和衝突的多少,衝突越多,遍歷的鏈就越多,複雜度就高(可以通過選擇合適的hash函數較少衝突)。

洛谷p1032字串變換

但是hash表功能不僅用來判重,還可以用來儲存,將數據範圍很大的點hash一下,再導入hash表中,直接查找即可,查找效率爲hash計算效率。

OJp1807正方形




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章