有想過hash["a1"] = datetime.now;這句是怎麼實現的嗎?我們來重溫下學校時代就學過的雜湊演算法吧。
我們要寫個class,實現如下主程式呼叫:
複製** **如下:
static void main(string args)
&n程式設計客棧bsp;
一看,也確實挺簡www.cppcns.com單的,就是乙個所引器,如下:
複製** **如下:
class myhash
set}
}程式中要儲存的物件,最終是要儲存在乙個陣列中的,而且需要通過乙個轉換函式來進行string key與陣列index的map,如下:
複製** **如下:
private list>> lstarray = new list>>(defaultsize);
private int mapstring2int(string key)
這個函式是遍歷string key的每個char,累加,最終取模(同陣列的長度),這樣得出的乙個value肯定就在陣列範圍內。
如果2個key轉換出來的index相同呢?會導致衝突,乙個最簡單的解決辦法是把陣列中的每個元素變成list, 也就是說,如果string key轉換後出現了相同的index,沒關係,只要把那2個元素都放在那個index所標識的陣列位置中即可,本文中用的是list>。
下面是整個程式的**:
複製** **如下:
class program
}class myhash
}public object this[string key]
set}
private tuple findbykey(string key, out list> lst)
}return obj;
}private static void ensurenotnull(string key)
private int mapstring2int(string key)
相應的index為:", key, hashindex));
return hashindex;}}
執行效果圖:
本文標題: c#雜湊演算法的實現方法及思路
本文位址:
瀏覽記錄實現思路及方法
之前想過用cookie來實現這個,但是cookie不能存放陣列,而且也不好實現,就用了session方法 將使用者瀏覽過的商品儲存到session裡,可以在瀏覽記錄裡顯示 session recent products id session recent products array unique ...
雜湊演算法之whirlpool演算法 C 實現
一,whirlpool演算法介紹 whirlpool演算法用於生成訊息摘要。該演算法輸入長度小於2 256位,輸出長度為512位。分組長度為512位,預留的明文長度填充為256位。該演算法使用512位的金鑰,參考了分組密碼的思路,使用輪函式加迭代,演算法結構與aes相似。二,填充說明 若分組不夠51...
歸併排序思路及演算法實現
歸併排序 通過將兩個或兩個以上的有序表組合成乙個新的有序表這一思想進行排序。思路 假設初始序列含有n個記錄,每個記錄長度為1,通過歸併合併成 n 2 個長度為2或1的有序序列 如此重複進行歸併,到最後就可以得到乙個長度為n的有序序列。及注釋如下 void merge int data,int p,i...