[算法导论]哈希表 @ Python
直接寻址方式:
class HashTable:
def __init__(self, length):
self.T = [None for i in range(length)] class Data:
def __init__(self, key, satelite_data):
self.key = key
self.satelite_data = satelite_data class Solution:
def DIRECT_ADDRESS_SEARCH(self, T, k):
return T[k] def DIRECT_ADDRESS_INSERT(self, T, x):
T[x.key] = x def 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 = key
self.satelite_data = satelite_data
self.next = None class Solution:
def CHAINED_HASH_INSERT(self, T, x):
'''insert x at the head of list T[h(x.key)]''' x.next = T[x.key].next
T[x.key].next = x def 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.next return tmp def 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.next
tmp.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 = 0
m = len(T)
while i < m:
j = h(k, i)
if T[j] == None:
T[j] = k
return j
else:
i = i + 1
print "hash table overflow" def HASH_SEARCH(self, T, k):
i = 0
while True:
j = h(k, i)
if T[j] == k:
return j
i = i + 1
if T[j] == None or i == m:
break
return None def h(self, k, i):
'''linear probing''' return (k + i) % m
[算法导论]哈希表 @ Python的更多相关文章
- 【算法】哈希表的诞生(Java)
参考资料 <算法(java)> — — Robert Sedgewick, Kevin Wayne <数据结构> ...
- 一种适合于MC与SMC算法的哈希表设计
MC算法与SMC算法中的三角片焊接问题 在之前的关于MC算法与SMC算法的博文中介绍了算法的实现,文章主要围绕算法的核心问题,即三角片如何产生的问题进行了详细的描述.但由于实际应用中需要的等值面Mes ...
- Java数据结构和算法之哈希表
五.哈希表 一般的线性表.树中,记录在结构中的相对位置是随机的即和记录的关键字之间不存在确定的关系,在结构中查找记录时需进行一系列和关键字的比较.这一类查找方法建立在“比较”的基础上,查找的效率与比较 ...
- [算法导论]二叉查找树的实现 @ Python
<算法导论>第三版的BST(二叉查找树)的实现: class Tree: def __init__(self): self.root = None # Definition for a b ...
- 基于visual Studio2013解决算法导论之027hash表
题目 hash表,用链表来解决冲突问题 解决代码及点评 /* 哈希表 链接法解决冲突问题 */ #include <iostream> using namespace std; s ...
- 算法复习——哈希表+折半搜索(poj2549)
搬讲义~搬讲义~ 折半搜索感觉每次都是打暴力时用的啊2333,主要是用于降次··当复杂度为指数级别时用折半可以减少大量复杂度··其实专门考折半的例题并不多···一般都是中途的一个小优化··· 然后折半 ...
- 哈希表(python)
# -*- coding: utf-8 -*- class Array(object): def __init__(self, size=32, init=None): self._size = si ...
- 算法导论 第一章and第二章(python)
算法导论 第一章 算法 输入--(算法)-->输出 解决的问题 识别DNA(排序,最长公共子序列,) # 确定一部分用法 互联网快速访问索引 电子商务(数值算 ...
- python code practice(二):KMP算法、二分搜索的实现、哈希表
1.替换空格 题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 分析: 将长度为 ...
随机推荐
- css3的学习笔记1
一. 边框 1. border-color border-color是设置边框的颜色.包括border-top-color,border-left-color,border-right-colo ...
- 1606: [Usaco2008 Dec]Hay For Sale 购买干草
Description 约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单位的马车,去顿因家买一些干草. 顿因有H(1≤H≤5000)包 ...
- 数位DP (51nod)
题目:数字1的数量 思路:首先考察不同位数以内的所有整数出现1的次数,例如四位数以内[0,9999],个十百千位均有可能出现1, 出现1的时候,其它三个位均可以是0~9,所以假设固定一个位为1,另外三 ...
- Microsoft Visual Studio 2010 VSTS单元测试指南
本来以为很简单的一个问题,今天预计10分钟搞定,结果到下班还没弄出结果,单元测试运行的时候一直处于无反应状态,最后估计可能是我装的2010有问题,结果到家一试果然是有问题,有时软件就是这么神奇. 言归 ...
- Git命令行初体验
1. git 版本控制系统 ==============运行环境======== 系统:windows git : Git-1.7.3.1-preview20101002.rar 下载地址:http ...
- AngularJS-Controller的使用-读书笔记
最近在读<Angular JS权威教程>读到第9页,按着示例做,居然报错,说MyController undefined,初学者不懂啊,找了个官方的文档,按着改了一下,貌似成功了,有需要的 ...
- ArcServer JS API开发离线部署方法
1. 下载ArcGIS API for JavaScript 3.6 Library. (地址:http://support.esrichina.com.cn/uploadfile/Javascr ...
- unity3d asset store下载的代码所在位置
Asset Store下载了官方的示例,却找不到了,又不想重新下载 PC:C:\Users\PCNAME\AppData\Roaming\Unity\Asset StoreMAC:"~/Li ...
- 通过Anuglar Material串串学客户端开发 - javascript编译和gulpfile.js
Angular Material不仅仅有本身框架的源代码,还有在这个框架上实现的一个应用docs.更为强大的是,这个应用是真正的产品网站:就是它的官网.我有理由相信,这个网站是从源代码直接发布的,从网 ...
- [BTS] Deploy Command
BizTalkDeploymentTools.AddResource.bat @Echo OFF SET ApplicationName=%~1 SET ComponentType=%~2 SET C ...