数据结构与算法(二十三)
映射抽象数据类型及Python实现
#哈希表实现:
class Hashtable:def __init__(self,n):self.size = n #根据实际情况设定self.slots = [None] * self.sizeself.data = [None] * self.sizedef hashfuncation(self,key):return key%self.sizedef rehash(self,oldhash):return (oldhash+1)%self.sizedef put(self,key,data):hashvalue = self.hashfuncation(key) #求出key所对应的散列值if self.slots[hashvalue] == None:self.slots[hashvalue] = keyself.data[hashvalue] = dataelse:if self.slots[hashvalue] == key:self.data[hashvalue] = dataelse:nextslot = self.rehash(hashvalue)while self.slots[nextslot] != None and self.slots[nextslot] != key:nextslot = self.rehash(nextslot)if self.slots[nextslot] == None:self.slots[nextslot] = keyself.data[nextslot] = dataelse:self.data[nextslot] = datadef get(self,key):startslot = self.hashfuncation(key)data = Nonestop = Falsefound = Falseposition = startslotwhile self.slots[position] != None and not found and not stop:if self.slots[position] == key :found = Truedata = self.data[position]else:position = self.rehash(position)if position == startslot :stop = Truereturn datadef __getitem__(self, key):return self.get(key)def __setitem__(self, key, data):self.put(key,data)
数据结构与算法(二十三)相关推荐
- 从零开始学数据结构和算法(二)线性表的链式存储结构
链表 链式存储结构 定义 线性表的链式存储结构的特点是用一组任意的存储单元的存储线性表的数据元素,这组存储单元是可以连续的,也可以是不连续的. 种类 结构图 单链表 应用:MessageQueue 插 ...
- 数据结构与算法:二叉搜索树
✨数据结构与算法:二叉搜索树
- 数据结构与算法--二叉堆(最大堆,最小堆)实现及原理
二叉堆(最大堆,最小堆)实现及原理 二叉堆与二叉查找树一样,堆也有两个性质,即结构性质和堆性质.和AVL树一样,对堆的一次操作必须到堆的所有性质都被满足才能终止,也就是我们每次对堆的操作都必须对堆中的 ...
- 基础夯实:基础数据结构与算法(二)
基础夯实:基础数据结构与算法(二) 常见的10种算法 1.递归算法 例题1:计算n! 例题2:斐波那契数列 例题3:递归将整形数字转换为字符串 例题4:汉诺塔 例题5:猴子吃桃 例题6:N皇后问题 2 ...
- 数据结构与算法(二) 栈与队列(代码示例)
数据结构与算法 栈与队列 1. 数组和链表实现栈 2. 用O(1)的时间复杂度求栈中的最小元素 3. 链表和数组实现队列 4. 用两个栈模拟队列操作 1. 数组和链表实现栈 链表的方式: /*** 描 ...
- 数据结构与算法——二叉平衡树(AVL树)详解
文章目录 AVL树概念 不平衡概况 四种平衡旋转方式 RR平衡旋转(左单旋转) LL平衡旋转(右单旋转) RL平衡旋转(先右后左双旋转) LR平衡旋转(先左后右单旋转) java代码实现 总结 AVL ...
- 数据结构与算法—二叉排序(查找)树
目录 前言 树 二叉树 二叉排序(搜索)树 概念 构造 主要方法 findmax(),findmin() isContains(int x) insert(int x) delete(int x) 完 ...
- Java数据结构与算法 二
树结构基础部分 树 数组存储方式 优点:通过下标方式访问元素,速度快.对于有序数组,可使用二分查找提高检索速度. 缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 链式存储方式 ...
- Java数据结构和算法( 二 ) ## 数组
目录 数组综述 Java中的数组 创建数组 访问数组 初始化数组 有序数组 线性查找 二分查找 有序数组的优缺点 大O表示法(order of) 为什么不用数据解决一切 - 小结 数组综述 数组是最广 ...
- 数据结构与算法-二叉搜索树
二叉搜索树 1.左右子树都是二叉搜索树 2.左子树都比根节点小 3.右子树都比根节点大 (一)编程实现 1.查找 2.插入:递归实现 4.删除 #include <iostream> #i ...
最新文章
- SQL 利用merge 同步数据库之间表的数据
- 利用OpenCV的Grabcut()函数实现图像的前景与背景的分割-并对Grabcut()作详细介绍
- Phonegap + JqueryMobile常见问题
- python打包成exe_【Python基础】一篇文件教你py文件打包成exe
- mysql数据库连接地址utf8_在Python中连接到MySQL数据库时UTF8不工作
- arraylist、map、queue、stack总结
- PostgreSQL 存储过程(Procedures)和函数(Functions)的区别
- windows server 2008下载及序列号
- 手机数字雨_cmd命令数字雨教程
- 名师工作室php,名师工作室
- Redis 运维实战 第07期:Hotkey
- php7反序列化问题,PHP7:反序列化漏洞案例及分析
- 小程序图片长按识别功能的实现
- probit模型与logit模型的相同点,区别及关系
- Scrapy爬取动态页面下载图片(以抓取360图片为例)
- python作中国地图背景气泡图_Excel图表中制作中国地图背景气泡图的操作方法
- 预警| WebLogic Server再曝高危0 day漏洞
- loginsight,一款通用的日志分析工具
- ubuntu安装budgie桌面
- 几种sklearn库直接实现分类算法