虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的。当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时。冲突就难免会发 生。另外,当关键字的实际取值大于哈希表的长度时,而且表中已装满了记录,如果插入一个新记录,不仅发生冲突,而且还会发生溢出。因此,处理冲突和溢出是 哈希技术中的两个重要问题。1、开放定址法 用开放定址法解决冲突的做法是:当冲突发生时,使用某种探查(亦称探
平衡二叉树(Balanced Binary Tree)是二叉查找树的一个进化体,也是第一个引入平衡概念的二叉树。1962年,G.M. Adelson-Velsky 和 E.M. Landis发明了这棵树,所以它又叫AVL树。平衡二叉树要求对于每一个节点来说,它的左右子树的高度之差不能超过1,如果插入或者删除一个节点使得高度之差大于1,就要进行节点之间的旋转,将二叉树重新维持在一个
【 声明:版权所有,欢迎转载。 联系信箱:yiluohuanghun@gmail.com】 归并排序(Merge sort)的基本思想是合并两个有序表,设有两个有序(升序)序列存储
【 声明:版权所有,欢迎转载。 联系信箱:yiluohuanghun@gmail.com】直接排序算是比较常用的算法了。不多说,直接切入正文。1、基本思想 假设待排序的记录存放在数组R[1..n]中。初始时,R[1]自成1个有序区,无序区为R[2..n]。从i=2起直至i=n为止,依次将R[i]插入当前的有序区R[1..i-1]中,生成含n个记录的有序区。
【 声明:版权所有,欢迎转载。 联系信箱:yiluohuanghun@gmail.com】 今天下午在公司不是太忙,又总结了一个排序类算法,算是偷了点懒,主要还是快排。快速排序实际上是最常用的一种排序算法了,就像名字一样、速度快,效率高。快排是基于冒泡排序而来的。整体来说,在最坏情况是每次划分选取的基准都是当前无序区中关键字最小(或最大)的记录,划分的结果是基准左边的子区间为空(或右边的子区间为空
【 声明:版权所有,欢迎转载。 联系信箱:yiluohuanghun@gmail.com】 前两天倩仔仔给我了一套试题让我看,整体来说感觉题都还算不错,从中随便找了两道。先看题吧!1、怎样判断一个单链表中是都存在环路?(搜狗面试题)两种方法:方法一:使用p、q两个指针,p总是向前走,但q每次都从头开始走,对于每个节点,看p走的步数是否和q一样。如图,当p从6走到3时,用了6步,此时若
【 声明:版权所有,欢迎转载。 联系信箱:yiluohuanghun@gmail.com】 感觉我的这个专题的顺序安排的有点问题,按照我们常规的思维应该是先线性表、队列、堆栈、单链表、双链表、但是我貌似给排反了,主要还是之前没想着要写这么细,那也就算了吧,既然专题名字叫“chaos的算法”,那就实实在在的让它“chaos”一次吧。 队
【 声明:版权所有,欢迎转载。 联系信箱:yiluohuanghun@gmail.com】 自之前写的两篇关于“数据结构与算法”的博文发表以后,就有两个博友发私信给我探讨我的这个分类,有博友说数据结构怎么能和算法在一起呢?其实吧,我倒感觉数据结构跟算法的关系就好比好基友是一辈子的关系。他们患难见真情、他们生死不相弃……事实上,数据结构和算法也有类似的关系。只谈数据结构,我
【 声明:版权所有,欢迎转载。 联系信箱:yiluohuanghun@gmail.com】 在我的上一篇博客中我谈到了哈希表,采用哈希表对海量数据进行查找是一个不错的方法,它比普通查找算法的有点是不言而喻的。比如说作为一个100万的数据,如果使用普通的查找方法,那么每一个数据查找平均下来就要几十万次,如果采用二分查找20多次就可以搞定了,如果采用哈希表查找的话会更快。这个差别是很明显的。但就这三
【 声明:版权所有,欢迎转载。 联系信箱:yiluohuanghun@gmail.com】 近段时间准备再次回味一下数据结构方面的知识,搞段时间算法,不管怎么说算法还是程序的灵魂。还是准备像之前写汇编或者别的博文一样对算法写一个专题,但一直在琢磨该起一个什么样的专题名,寻思许久无果,所以就直接取名为“chaos的算法”,这里并不是说算法chaos,而是说取这个
排序是计算机程序设计中一种重要的操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。 我们之前所熟知的大概是冒泡排序,选择排序,但相对来说,这两种方法的效率不是太高,在这篇文章中我简单的介绍下直接插入排序。 直接插入排序是一种简单的排序方法,它的基本操作是将一个记录插入到已排好的有序表
倘若我们要在计算机上建立一个交通咨询系统则可以采用图的结构来表示实际的交通网络。其实现最基本的功能,求出任意两点间的最短路径, 求最短路径的经典方法有很多种,最常用的便是迪杰斯特拉算法和佛洛依德(Floyd)算法,这篇文章就着重介绍Floyd算法。 求两点之间的最短路径无外乎有两种情况,一种就是从一点直接到另一点,另一种就是从一点经过n个节点
近段时间又回顾了下数据结构中的图,我之前的有一篇博文介绍了图与线性表和树的区别与联系。并且就图的存储和图的创建也做了一些简单的说明,这一篇我将着重说说图的两种基本的遍历方法,深度遍历和广度遍历。深度遍历: 深度遍历类似于树的先根遍历,是树的先根遍历的推广。假设初始状态是图中所有顶点未曾被访问,则深度遍历可从图中某个顶点v出发,访问此顶点,然后依次从v的未被访问的邻接点出发深度优先遍历图,直至图中所
图(Graph)是一种较线性表和数更为复杂的数据结构,在线性表中数据元素仅有线性关系,各一个数据元素只有一个直接前驱和一个直接后继,在树形结构中,数据元素之间有着明显的层次关系,并且在每一层上的数据元素可能和下一层中多个元素相关,但只能和上一层中的一个元素相关,而在图形结构中就显得数据元素异常的自由了,在图中的任意两个元素之间可能是相关的。 首
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号