python 哈希查找

Posted F

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 哈希查找相关的知识,希望对你有一定的参考价值。

 

import random

INDEXBOX=7       #哈希表元素个数
MAXNUM=13        #数据个数

class Node:      #声明链表结构
    def __init__(self,val):
        self.val=val
        self.next=None

global indextable
indextable=[Node]*INDEXBOX  #声明动态数组

def create_table(val):      #建立哈希表子程序
    global indextable
    newnode=Node(val)
    myhash=val%7              #哈希函数除以7取余数
   
    current=indextable[myhash]
    
    if current.next==None:
        indextable[myhash].next=newnode
    else:
        while current.next!=None:
            current=current.next
    current.next=newnode   #将节点加入链表

def print_data(val):       #打印哈希表子程序
    global indextable
    pos=0
    head=indextable[val].next         #起始指针
    print(   %2d:	 %val,end=‘‘)   #索引地址
    while head!=None:
        print([%2d]- %head.val,end=‘‘)
        pos+=1
        if pos % 8==7:
            print(	)
        head=head.next
    print()

def findnum(num):     #哈希查找子程序
    i=0
    myhash =num%7
    ptr=indextable[myhash].next
    while ptr!=None:
        i+=1
        if ptr.val==num:
            return i
        else:
            ptr=ptr.next
    return 0



#主程序

data=[0]*MAXNUM
index=[0]*INDEXBOX


for i in range(INDEXBOX):  #清除哈希表
    indextable[i]=Node(-1)

print(原始数据:)
for i in range(MAXNUM):
    data[i]=random.randint(1,30)    #随机数建立原始数据
    print([%2d]  %data[i],end=‘‘) #并打印出来
    if i%8==7:
        print()

for i in range(MAXNUM):
    create_table(data[i])  #建立哈希表
print()

while True:
    num=int(input(请输入查找数据(1-30),结束请输入-1:))
    if num==-1:
        break
    i=findnum(num)
    if i==0:
        print(#####没有找到 %d ##### %num)
    else:
        print(找到 %d,共找了 %d 次! %(num,i))
    

print(
哈希表:)
for i in range(INDEXBOX):
    print_data(i)          #打印哈希表
print()

 

以上是关于python 哈希查找的主要内容,如果未能解决你的问题,请参考以下文章

查找:哈希表

python 哈希查找

Python数据结构系列☀️《查找排序-基础知识》——知识点讲解+代码实现☀️

python数据结构与算法 29-1 哈希查找

python2根据索引表查找相应的录音片段拼接录音

数据结构 哈希查找