
搜索算法
文章平均质量分 95
曲小鑫
我的学习笔记
展开
-
散列(1) 简要描述和链地址法
1. 散列的定义犹如关键字索引,我们把带有关键字ii的元素存储到表的第ii个位置,使其可以直接访问。关键字索引的算法不是比较关键字值进行比较,而是以关键字值作为数组的下标索引。我们对关键字索引搜索算法进行扩展,得到散列(Hash)搜索算法:散列(Hash)搜索算法 试图通过算术运算将关键字的值转换成表中的地址来直接引用表中的元素;而不是像在其他数据结构中比较搜索关键字的值与元素中关键字的值来实现搜索原创 2015-04-22 15:42:06 · 2844 阅读 · 0 评论 -
散列(2)线性探测法和双重散列法
接上篇 散列的简要描述和链地址法 解决散列冲突的方法:1. 线性探测法如果我们能够预测将要存入表中元素的数目,而且我们有足够的内存空间可以容纳带有空闲空间的所有关键字,那么使用链地址法是不值得的。我们依靠空的存储空间解决冲突:设计表长M大于元素数目N,开放地址法,最简单的开放地址法是线性探测法:初始化该符号表的实现将元素保存到大小是元素个数两倍的散列表中。void HashTableInit(in原创 2015-04-22 17:08:16 · 20691 阅读 · 1 评论 -
搜索(1):符号表
符号表的概念符号表的顺序搜索1 基于有序数组的符号表2 基于无序链表的符号表参考资料1. 符号表的概念搜索:我们把处理的数据划分为记录或数据项(item),每个数据项都有一个用于搜索的关键字(key)。搜索的目标是找出目标关键字所匹配的数据项。搜索的目的是访问这个数据项(不仅是关键字)中的信息。 符号表:它是一种数据结构,其中数据项含有关键字。它支持两个基本的操作:插入一个新的数据项和搜原创 2015-04-14 10:21:00 · 1108 阅读 · 0 评论 -
搜索(2):二叉搜索树 BST 和 根插法
二分搜索二叉搜索树1 二叉搜索树的初始化插入搜索2 使用BST排序3 BST上根节点的插入insert4 BST上的选择select操作划分操作5 BST上的删除delete操作6 两棵BST的连接joinBST的优缺点参考资料和所有代码1. 二分搜索将分治法应用于基于数组符号表的顺序搜索中,可以大大降低大型数据集合的搜索时间。 把数据集合分成两部分,确定搜索关键字属于哪一部分原创 2015-04-14 10:24:34 · 1760 阅读 · 0 评论 -
AVL平衡树 - 二叉搜索树的扩展1
1. AVL树的介绍AVL树是根据它的发明者G.M. Adelson-Velsky和E.M. Landis命名的。 它是最先发明的自平衡二叉查找树,也被称为高度平衡树。相比于”二叉查找树”,它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 如上图(左):非AVL树,如对节点9,左子树高度为0,右子树高原创 2015-04-28 20:08:27 · 900 阅读 · 0 评论 -
伸展树 - 二叉搜索树的扩展2
目录伸展树的介绍伸展树的C实现1 节点定义2 旋转3 伸展树的伸展4 搜索4 伸展树的插入和删除全部代码和参考资料1. 伸展树的介绍伸展树(splay tree)是一种搜索二叉树,它能在O(log n)O(log\ n)内完成插入、查找和删除操作。 (1)伸展树满足搜索二叉树的性质,左子节点小于根节点,右子节点大于等于根节点。 (2)伸展树独有特点:当某个节点被访问时,伸展树会通原创 2015-04-30 10:47:12 · 1351 阅读 · 0 评论