[算法导论]哈希表 @ 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. 分析: 将长度为 ...
随机推荐
- 【转】APNs消息推送完整讲解
https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificat ...
- 评分视图的封装 (星星 RatingView)
#import "RatingView.h" #define kRatingScale 10 @implementation RatingView { UIView *_grayS ...
- 图层的transform属性
Main.storyboard // // ViewController.m // 7A11.图层的transform属性 // // Created by huan on 16/2/4. // ...
- HibernateTemplate和HibernateDaoSupport(spring注入问题)
HibernateTemplate HibernateTemplate是spring提供的一个就hibernate访问持久层技术而言.支持Dao组件的一个工具.HibernateTemplate提供持 ...
- AIX之ASM存储扩容
ASM存储扩容操作其实很简单,无非就是向DiskGroup(简称DG)里添加物理磁盘,增加DG的存储空间.说来简单,其实操作过程中有很多小细节要注意,否则,带来的后果是灾难性的. ASM扩容操作步骤( ...
- ( 转)基于.NET平台常用的框架整理
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就 ...
- spring MVC注解深入研究
@Controller @Service @Controller和 @Component注册一个action 到spring 上下文中,bean 的ID 默认为类名称开头字母小写.@Reposito ...
- MySql、SqlServer、Oracle 三种数据库查询分页方式
SQL Server关于分页 SQL 的资料许多,有的使用存储过程,有的使用游标.本人不喜欢使用游标,我觉得它耗资.效率低:使用存储过程是个不错的选择,因为存储过程是颠末预编译的,执行效率高,也更灵活 ...
- Linux:文件类型和权限
一个目录要同时具有读权限和执行权限才可以打开,而一个目录要有写权限才允许在其中创建其它文件.
- Openstack Murano(kilo)二次开发之添加Volume
Openstack Murano(kilo)二次开发之添加Volume 欢迎转载,转载请注明出处:http://www.cnblogs.com/fmnisme/p/openstack_murano_a ...