直接寻址方式:

class HashTable:def __init__(self, length):self.T = [None for i in range(length)]class Data:def __init__(self, key, satelite_data):self.key = keyself.satelite_data = satelite_dataclass Solution:def DIRECT_ADDRESS_SEARCH(self, T, k):return T[k]def DIRECT_ADDRESS_INSERT(self, T, x):T[x.key] = xdef DIRECT_ADDRESS_DELETE(self, T, x):T[x.key] = None

分离连接法:

class HashTable:def __init__(self, length):self.T = [None for i in range(length)]class Data:def __init__(self, key, satelite_data):self.key = keyself.satelite_data = satelite_dataself.next = Noneclass Solution:def CHAINED_HASH_INSERT(self, T, x):'''insert x at the head of list T[h(x.key)]'''x.next = T[x.key].nextT[x.key].next = xdef CHAINED_HASH_SEARCH(self, T, k, satelite_data):'''search for an element with key k in list T[h(k)]'''tmp = T[k]while tmp.next.satelite_data != satelite_data:tmp = tmp.nextreturn tmpdef CHAINED_HASH_DELETE(self, T, x):'''delete x from the list T[h(x.key)]'''tmp = T[x.key]while tmp.next.satelite_data != x.satelite_data:tmp = tmp.nexttmp.next = tmp.next.next

开放定址法:

class HashTable:def __init__(self, length):self.T = [None for i in range(length)]class Solution:def HASH_INSERT(self, T, k):i = 0m = len(T)while i < m:j = h(k, i)if T[j] == None:T[j] = kreturn jelse:i = i + 1print "hash table overflow"def HASH_SEARCH(self, T, k):i = 0while True:j = h(k, i)if T[j] == k:return ji = i + 1if T[j] == None or i == m:breakreturn Nonedef h(self, k, i):'''linear probing'''return (k + i) % m

[算法导论]哈希表 @ Python相关推荐

  1. 【算法】哈希表 ( 两数之和 )

    算法 系列博客 [算法]刷题范围建议 和 代码规范 [算法]复杂度理论 ( 时间复杂度 ) [字符串]最长回文子串 ( 蛮力算法 ) [字符串]最长回文子串 ( 中心线枚举算法 ) [字符串]最长回文 ...

  2. 查找算法【哈希表】 - 处理冲突的方法:开放地址法-线性探测法

    查找算法[哈希表] - 处理冲突的方法 无论如何设计散列函数,都无法避免发生冲突. 如果发生冲突,就需要处理冲突. 处理冲突的方法分为3种: 开放地址法 链地址法 建立公共溢出区. [开放地址法] 开 ...

  3. 查找算法【哈希表】 - 散列查找及性能分析

    查找算法[哈希表] - 散列查找及性能分析 散列表虽然建立了关键字和存储位置之间的直接映像,但冲突不可避免,在散列表的查找过程中,有的关键字可以通过直接定址1次比较找到,有的关键字可能仍然需要和若干关 ...

  4. 查找算法【哈希表】- 散列函数

    查找算法[哈希表]- 散列函数 散列函数(Hash Function),又被称为哈希函数,是将关键字映射到存储地址的函数,被记为hash(key)=Addr. 设计散列函数时需要遵循两个原则: ①散列 ...

  5. 散列算法和哈希表结构

    散列算法和哈希表结构 散列算法和哈希表结构 算法概述 Hash ,一般翻译做" 散列" ,也有直接音译为" 哈希" 的,就是把任意长度的输入(又叫做预映射, p ...

  6. 哈希算法、哈希表的作用与原理

    闲谈Hash 由于以前对hash的理解就不是很透彻,与是在工作不忙的时候,回首掏了一波hash,并记录一下自己的心得体会. 哈希算法和哈希表都不是自然产生的,都是人为的产物,既然是人为了的,那么就可以 ...

  7. 趣味算法——探索哈希表的神秘世界

    文章目录 前言: 一.哈希表的魔力 二.哈希表的灵魂--哈希函数 1. 什么是哈希函数 2. 哈希函数的特性 3. 哈希冲突 三.解决冲突的艺术 1. 开放寻址法 2. 链地址法 3. 冲突解决策略的 ...

  8. “chaos”的算法---之哈希表(HASH)算法详解

    [ 声明:版权所有,欢迎转载.  联系信箱:yiluohuanghun@gmail.com] 在数据查找中我们会想到很多不错的.行之有效的方法,大体分为以下几种,1.对于空间连续的数据采用二分查找法等 ...

  9. 【从蛋壳到满天飞】JS 数据结构解析和算法实现-哈希表

    前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...

  10. e - 数据结构实验之查找五:平方之哈希表_leetcode算法之哈希表

    今天该来盘一盘 哈希表 这类题目 分类别解析leetcode上的一些相关的例题路,代码采用C++与python实现. 哈希表 哈希表是一种很有用的数据结构, 其作用主要是以空间换时间, 在c++中主要 ...

最新文章

  1. ASP.NET 2.0 读取配置文件[INI](示例代码下载)
  2. 11g新特性:X$DBGALERTEXT一个很酷的内部视图
  3. 计算机专业python教材_计算机专业几本必看的书!
  4. 大道至简第一章 读后感
  5. 「CF622F」The Sum of the k-th Powers「拉格朗日插值」
  6. 记事本快捷键设置 java_Java给JFrame窗口设置热键---不完整记事本
  7. Linux macos 常用终端操作
  8. 【Python爬虫学习笔记11】Queue线程安全队列和GIL全局解释器锁
  9. 崩溃bug日志总结2
  10. python另存为excel_在Python中将Excel另存为HTML
  11. 设置RadioButton控件中文本的位置.
  12. 八家顶级无人车公司首次披露故障详情,从百度到Waymo
  13. Android隐藏应用桌面图标/动态修改桌面图标
  14. filenet骗局_将FileNet P8与J2EE消息传递基础结构集成
  15. [转]ceph pg peering过程分析
  16. 如何优雅地记录操作日志
  17. tp交换机管理页面_tplink交换机设置步骤使用方法
  18. 第十七届全国大学生智能车竞赛航天智慧物流获奖证书
  19. 解决open-vm-tools安装时Failed to get unit file state for run-vmblockx2dfuse.mount
  20. 领存Xeon E5 6U VPX高性能计算刀片

热门文章

  1. 编辑距离Edit distance
  2. linux查看谷歌服务,如何查询Linux服务的作用
  3. 宝塔面板连接阿里云服务器、及部署网页项目教程
  4. Android Framework 全面分析 FallbackHome
  5. Java-bug记录【1】
  6. ubuntu系统无法连接识别到adb设备和fastboot设备解决方法
  7. Linux使用CLASS_ATTR创建节点
  8. 搭建和测试 Redis 主备和集群
  9. Sublime Text关闭自动更新
  10. 子网划分与IP地址的概念