#!/usr/bin/env python
# -*- coding:utf-8 -*-
class
hashtable:
def__init__
(self, size):
self.elem = [none
for i in range(size)] # 使用list資料結構作為雜湊表元素儲存方法
self.count = size # 最大表長
defhash
(self, key):
return key % self.count # 雜湊函式採用除留餘數法
definsert_hash
(self, key):
print key
"""插入關鍵字到雜湊表內"""
address = self.hash(key) # 求雜湊位址
print address
while self.elem[address] != none: # 當前位置已經有資料了,發生衝突。
address = (address+1) % self.count # 線性探測下一位址是否可用
print address
self.elem[address] = key # 沒有衝突則直接儲存。
print self.elem
defsearch_hash
(self, key):
"""查詢關鍵字,返回布林值"""
star = address = self.hash(key)
while self.elem[address] != key:
address = (address + 1) % self.count
ifnot self.elem[address] or address == star: # 說明沒找到或者迴圈到了開始的位置
return
false
return
true
if __name__ == '__main__':
list_a = [0, 12, 67, 56, 16, 25, 37, 22, 29, 15, 47, 48, 34]
hash_table = hashtable(len(list_a))
for i in list_a:
hash_table.insert_hash(i)
for i in hash_table.elem:
if i:
print((i, hash_table.elem.index(i)))
print(hash_table.search_hash(15))
print(hash_table.search_hash(33))
Python hash 函式 筆記
hash 用於獲取取乙個物件 字串或者數值等 的雜湊值。釋義 通過一定的雜湊演算法 典型的有md5,sha 1等 將一段較長的資料對映為較短小的資料,這段小資料就是大資料的雜湊值。他有這樣乙個特點,他是唯一的,一旦大資料發生了變化,哪怕是乙個微小的變化,他的雜湊值也會發生變化。hash 函式的用途 ...
python 實現演算法 Python實現演算法 一
1.二分查詢 def binary search mylist,item low 0 high len mylist 1 while low high mid low high 2 如果 low high 2不是偶數,python自動將mid向下圓整。guess mylist mid if gues...
k NN演算法實現k 鄰近演算法實現
將資料點 1,1.1 定義為類a,資料點 0,0.1 定義為類b k 鄰近演算法實現 計算已知類別資料集中的點與當前點之間的距離 按照距離遞增次序排序 選取與當前點距離最小的 個點 確定前 個點所在的類別的出現頻率 返回前 個點出現頻率最高的類別作為當前點的 分類 from numpy import...