import random

INDEXBOX=       #哈希表元素个数
MAXNUM= #数据个数 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取余数 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=
head=indextable[val].next #起始指针
print(' %2d:\t' %val,end='') #索引地址
while head!=None:
print('[%2d]-' %head.val,end='')
pos+=
if pos % ==:
print('\t')
head=head.next
print() def findnum(num): #哈希查找子程序
i=
myhash =num%
ptr=indextable[myhash].next
while ptr!=None:
i+=
if ptr.val==num:
return i
else:
ptr=ptr.next
return #主程序 data=[]*MAXNUM
index=[]*INDEXBOX for i in range(INDEXBOX): #清除哈希表
indextable[i]=Node(-) print('原始数据:')
for i in range(MAXNUM):
data[i]=random.randint(,) #随机数建立原始数据
print('[%2d] ' %data[i],end='') #并打印出来
if i%==:
print() for i in range(MAXNUM):
create_table(data[i]) #建立哈希表
print() while True:
num=int(input('请输入查找数据(1-30),结束请输入-1:'))
if num==-:
break
i=findnum(num)
if i==:
print('#####没有找到 %d #####' %num)
else:
print('找到 %d,共找了 %d 次!' %(num,i)) print('\n哈希表:')
for i in range(INDEXBOX):
print_data(i) #打印哈希表
print()

python 哈希查找的更多相关文章

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

    ).称为哈希查找. 要做到这种性能,我们要知道元素的可能位置.假设每一个元素就在他应该在的位置上,那么要查找的时候仅仅须要一次比較得到有没有的答案,但以下将会看到.不是这么回事. 到10. water ...

  2. sdut 487-3279【哈希查找,sscanf ,map】

    487-3279 Time Limit: 2000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接: sdut:   http://acm.sdut.ed ...

  3. 用Python和FFmpeg查找大码率的视频文件

    用Python和FFmpeg查找大码率的视频文件 本文使用Python2.7, 这个工作分两步 遍历目录下的视频文件 用ffprobe获取是视频文件的码率信息 用ffprobe 获取json格式的视频 ...

  4. Python实现二分查找

    老生常谈的算法了. #!/usr/bin/python # -*- coding:utf-8 -*- # Filename: demo.py # 用python实现二分查找 def binarySea ...

  5. 数据结构与算法之PHP查找算法(哈希查找)

    一.哈希查找的定义 提起哈希,我第一印象就是PHP里的关联数组,它是由一组key/value的键值对组成的集合,应用了散列技术. 哈希表的定义如下: 哈希表(Hash table,也叫散列表),是根据 ...

  6. python 模块路径查找 及 添加

    **** python 模块路径查找: 通过模块的__file__属性来确定: **** 模块路径添加: 方法一:函数添加1 import sys2 查看sys.path3 添加sys.path.ap ...

  7. 用 Python 实现文件查找

    用 Python 实现文件查找(BIF实现及队列实现) (1)利用内置函数实现文件查找 1.功能:返回用户输入的文件的绝对路径 2.设计思路: (1)用户输入在哪个盘进行查找 (2)遍历此盘文件,若为 ...

  8. hash 哈希查找复杂度为什么这么低?

    hash 哈希查找复杂度为什么这么低? (2017-06-23 21:20:36) 转载▼   分类: c from: 作者:jillzhang 出处:http://jillzhang.cnblogs ...

  9. 查找算法(7)--Hash search--哈希查找

    1.哈希查找 (1)什么是哈希表(Hash) 我们使用一个下标范围比较大的数组来存储元素.可以设计一个函数(哈希函数, 也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下标)相对应,于是用 ...

随机推荐

  1. ios获取设备手持方向——电子罗盘

    转:http://book.51cto.com/art/201411/457105.htm 2014-11-15 19:07 张亚飞/崔巍 中国铁道出版社 字号:T | T 综合评级: 想读()  在 ...

  2. OC开发_Storyboard——iPad开发

    iPad开发(Universal Applications) 一.iPad 1.判断是否在iPad上 BOOL iPad = ([[UIDevice currentDevice] userInterf ...

  3. Dij二级最短路

    hdu1245 Saving James Bond Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/32768 K (Jav ...

  4. centos7.4yum错误

    1. 首先删除redhat原有的yum   rpm -aq | grep yum | xargs rpm -e --nodeps   rpm -aq | grep python-iniparse | ...

  5. 170508、忘记jenkins密码或者修改jenkins密码

    刚配置好jenkins时,不知道密码是什么,很多同学都有这种烦恼把,各种抓狂. 操作步骤: 1.进入jenkins用户目录  cd /home/rick/.jenkins/users/admin ps ...

  6. VS2012/2013引用对话框的糟糕设计

    先看两张图: 1. 首次打开引用对话框(Reference Manager),Name显示不全: (图1) 2. 然后双击或拖动splitter,让Name显示全: (图2) 3. 下次再打开引用对话 ...

  7. linux内核cdev_init系列函数(字符设备的注册)

    内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义: linux-2.6.22/include/linux/cdev.h struct cdev {    struct kobject ...

  8. controller中两个方法之间共享一个变量LinkedHashMap

    1:引用传递,创建一个变量,给两个线程都传递进去. 2:静态修饰 static  通过该修饰符说明,该变量只有一份,  所有线程共用一份. 例如下面的htmlidMap通过static变量修饰, up ...

  9. 3.3 Templates -- Conditionals(条件语句)

    有时候你可能仅仅想展现模板的一部分,如果属性存在的话. 1. 我们可以使用{{if}}去有条件的渲染一块: {{#if person}} Welcome back, <b>{{person ...

  10. mysql锁机制之综述(一)

    https://zhuanlan.zhihu.com/p/29150809 一.数据库有锁机制的原因. 数据库锁定机制简单来说,就是数据库为了保证数据的一致性和有效性,而使各种共享资源在被并发访问变得 ...