2013-03-07

「アルゴリズムを、はじめよう」ハッシュ探索法をPythonで書く(データ取り出し編)

「アルゴリズムを、はじめよう」を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)

だんだんごちゃごちゃしてきました。間違いや改善方法など、何でもご意見いただければ嬉しいです。

0 件のコメント:

コメントを投稿