1. import random
  2.  
  3. INDEXBOX= #哈希表元素个数
  4. MAXNUM= #数据个数
  5.  
  6. class Node: #声明链表结构
  7. def __init__(self,val):
  8. self.val=val
  9. self.next=None
  10.  
  11. global indextable
  12. indextable=[Node]*INDEXBOX #声明动态数组
  13.  
  14. def create_table(val): #建立哈希表子程序
  15. global indextable
  16. newnode=Node(val)
  17. myhash=val% #哈希函数除以7取余数
  18.  
  19. current=indextable[myhash]
  20.  
  21. if current.next==None:
  22. indextable[myhash].next=newnode
  23. else:
  24. while current.next!=None:
  25. current=current.next
  26. current.next=newnode #将节点加入链表
  27.  
  28. def print_data(val): #打印哈希表子程序
  29. global indextable
  30. pos=
  31. head=indextable[val].next #起始指针
  32. print(' %2d:\t' %val,end='') #索引地址
  33. while head!=None:
  34. print('[%2d]-' %head.val,end='')
  35. pos+=
  36. if pos % ==:
  37. print('\t')
  38. head=head.next
  39. print()
  40.  
  41. def findnum(num): #哈希查找子程序
  42. i=
  43. myhash =num%
  44. ptr=indextable[myhash].next
  45. while ptr!=None:
  46. i+=
  47. if ptr.val==num:
  48. return i
  49. else:
  50. ptr=ptr.next
  51. return
  52.  
  53. #主程序
  54.  
  55. data=[]*MAXNUM
  56. index=[]*INDEXBOX
  57.  
  58. for i in range(INDEXBOX): #清除哈希表
  59. indextable[i]=Node(-)
  60.  
  61. print('原始数据:')
  62. for i in range(MAXNUM):
  63. data[i]=random.randint(,) #随机数建立原始数据
  64. print('[%2d] ' %data[i],end='') #并打印出来
  65. if i%==:
  66. print()
  67.  
  68. for i in range(MAXNUM):
  69. create_table(data[i]) #建立哈希表
  70. print()
  71.  
  72. while True:
  73. num=int(input('请输入查找数据(1-30),结束请输入-1:'))
  74. if num==-:
  75. break
  76. i=findnum(num)
  77. if i==:
  78. print('#####没有找到 %d #####' %num)
  79. else:
  80. print('找到 %d,共找了 %d 次!' %(num,i))
  81.  
  82. print('\n哈希表:')
  83. for i in range(INDEXBOX):
  84. print_data(i) #打印哈希表
  85. 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. [面经] 南京SAP面试(下)

    上一篇讲到了一面结束,这一篇说说剩下的事情. 周三上午一面完了之后回去上班,本以为要等几天才会二面,结果那个经理M下午就打电话给我,约了第二天(周四)下午过去面试,会有Boss从上海过来面,办事效率还 ...

  2. Scala简介及基础语法

    一.scala简介 官网:https://www.scala-lang.org/ Scala语言很强大,集成了面向对象和函数式编程的特点. 运行在JVM(jdk). 大数据中为什么学习scala? s ...

  3. Just a Hook---hdu1698(线段树---区间处理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 现有n个金属(编号1---n),每个金属的材质都是铜,有m个操作,每个操作都是把编号 L 到 R ...

  4. 两个提高工作效率的神器-Restlet Client和fe助手

    首先是要FQ,百度***或者直接下载蓝灯. 然后安装第一个WEB前端助手:

  5. sql server学习路径地址

    联机丛书2005:https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2005/ms130214(v=sql.90) 联 ...

  6. 【Lua】LDoc生成Lua文档工具的使用

    参考资料: http://my.oschina.net/wangxuanyihaha/blog/188909   LDoc介绍:     LDoc是一个Lua的文档生成工具,过去,比较常用的Lua生成 ...

  7. 【转】Deep Learning(深度学习)学习笔记整理系列之(一)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0  2013-0 ...

  8. js cookie的读写

    cookie是一小段信息,以键/值对的信息保存在计算机硬盘上的字符串, cookie存储容量大概在4kb,不同的浏览器厂家对cookie大小的限制有微微的差异:cookie主要的本质是“识别”,通过识 ...

  9. Codeforces Round #532 (Div. 2) Solution

    A. Roman and Browser 签到. #include <bits/stdc++.h> using namespace std; ]; int get(int b) { ]; ...

  10. eclipse如何设置编译后target目录不提交svn服务器

    eclipse设置 windows ->prefrences->team->Ignored Resource 点击Add Pattern  输入    */target/*    等 ...