「アルゴリズムを、はじめよう」をPythonで書く第四弾。ハッシュ探索法のデータを取り出すアルゴリズムです。データの格納編はこちら。
第6章:ハッシュ探索法のアルゴリズム(データの取り出し)
12,25,36,20,30,8,42という数字を要素11個の配列に格納する。ハッシュ関数は、ArrayD % 11。
格納した配列から12が入っている場所を探す。
#!/usr/bin/env python
#-*- coding: utf-8 -*-
class Hash:
def __init__(self):
self.arrayD = [12, 25, 36, 20, 30, 8, 42]
self.arrayH = [0] * 11
self.max = len(self.arrayH)
def insert(self):
for d in self.arrayD:
k = d % 11
count = 0
while count < self.max:
if self.arrayH[k] == 0:
self.arrayH[k] = d
break
else:
k += 1
if k >= self.max - 1:
k = 0
count += 1
print self.arrayH
def search(self, num):
ans = num % 11
count = 0
while count < self.max:
if self.arrayH[ans] == num:
print "%d is in the arrayH[%d]." % (num, ans)
break
else:
ans += 1
if ans >= self.max - 1:
ans = 0
count += 1
if __name__ == '__main__':
hash = Hash()
hash.insert()
hash.search(12)
だんだんごちゃごちゃしてきました。間違いや改善方法など、何でもご意見いただければ嬉しいです。