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. oracle缩写与术语

    术语 定义活动会话池 资源组或子计划允许的当前活动会话数ADDM Automatic Database Diagnostic Monitor(自动数据库诊断监视程序)ASM Automatic Sto ...

  2. 单源最短路(spfa),删边求和

    http://acm.hdu.edu.cn/showproblem.php?pid=2433 Travel Time Limit: 10000/2000 MS (Java/Others)    Mem ...

  3. POM(project Object Model) Maven包管理依赖 pom.xml文件

    什么是POM POM全称为“Project Object Model”,意思是工程对象模型.Maven工程使用pom.xml来指定工程配置信息,和其他文本信息.该配置文件以xml为格式,使用xml语法 ...

  4. log4j配置输出到多个日志文件(转)

    參考资料:http://logging.apache.org/log4j/1.2/manual.html 通常我们项目里,有一些重要的日志想单独的输出到指定的文件,而不是全总输出到系统的日志文件中.那 ...

  5. Guava增强for循环

    Guava的前身是Google Collections,是Google开发出的一个开源Java常用类库,包含了一些集合的便捷操作API.本文通过一些常用的例子来剖析Guava的奇妙之处. Guava是 ...

  6. java 新手入门课程03

    2017.7.6  java 课堂笔记 1.关于分支; if/else 是基于boolean 值的双分支 Switch  基于数字(包括整数 char byte  枚举, 字符串)类型的多分支  方法 ...

  7. pmd代码安全扫描工具

    pmd是一款开源的代码扫描工具,这里对pmd做了一些修改,加了安全相关的插件.支持的代码文件类型:java.vue.js.xml 下载链接: https://files.cnblogs.com/fil ...

  8. supervisor - Python进程管理工具(转)

    add by zhj: 下面是在ubuntu上的一些使用经验 1. 简介 supervisor有两个组件:supervisord和supervisorctl,组成了client/server结构. s ...

  9. virtIO之VHOST工作原理简析

    2017-07-19 一.前言 之前有分析过虚拟化环境下virtIO的实现,virtIO相关于传统的虚拟IO在性能方面的确提高了不少,但是按照virtIO虚拟网卡为例,每次虚拟机接收数据包的时候,数据 ...

  10. python控制台输出颜色

    python_控制台输出带颜色的文字方法在开发项目过程中,为了方便调试代码,经常会向stdout中输出一些日志,默认的这些日志就直接显示在了终端中.而一般的应用服务器,第三方库,甚至服务器的一些通告也 ...