数据结构与算法
文章平均质量分 73
qll125596718
新浪微博:http://weibo.com/liamquan
展开
-
Hash学习(3)-冲突的解决
为提高hash表查找性能,除了考虑选择合适的hash表表长和完美的hash函数外,还必须考虑hash表处理冲突的能力。当hash函数对两个不同的数据项产生了相同的hash值时,冲突就产生了。对于冲突的处理,通常采用的方法可以分为三类:(1)线性再散列法,简单的按顺序遍历hash表,寻找下一个可用的槽;(2)非线性再散列法,计算一个新的hash值;(3)外部拉链法,将hash表中的每个槽原创 2011-11-30 10:58:46 · 8706 阅读 · 1 评论 -
Hash学习(2)-Hash函数
一个好的hash函数一般具有以下两个特点:第一,速度快,第二,能够将散列键均匀的分布在整个表中,保证不会产生聚集。通常,hash函数具有如下形式:hash-key = calculated-key % tablesize上一节主要讨论了一下tablesize,为了提高散列键的离散程度,tablesize通常取素数。一般而言,没有绝对好的hash函数,hash函数的好坏很大程度上依赖于输入键原创 2011-11-23 20:44:09 · 3826 阅读 · 0 评论 -
Hash学习(1)-Hash表的表大小
hash表的出现主要是为了对内存中数据的快速、随机的访问。它主要有三个关键点:Hash表的大小、Hash函数、冲突的解决。 这里首先谈谈第一点:Hash表的大小。 Hash表的大小一般是定长的,如果太大,则浪费空间,如果太小,冲突发生的概率变大,体现不出效率。所以,选择合适的Hash表的大小是Hash表性能的关键。 对于Has原创 2011-11-21 20:48:53 · 10891 阅读 · 0 评论 -
AVL树学习
1.什么是AVL树 AVL树是带有平衡条件的二叉查找树,是其每个结点的左子树和右子树的高度差最多差1的二叉查找树。如图1,左边的树是AVL树,但右边的不是。图1 左边的是AVL树,右边的不是2.AVL树的基本操作 当向一棵AVL树中插入一个结点时,可能破坏AVL树的特性(例如,将6插入图1的AVL树中将会破坏项为8的结点平衡条件)。原创 2011-11-18 22:19:05 · 3147 阅读 · 0 评论 -
bitmap解析
1.引子 问题描述: 输入:一个最多含有n个不重复的正整数(也就是说可能含有少于n个不重复正整数)的文件,其中每个数都小于等于n,且n=10^7。 输出:得到按从小到大升序排列的包含所有输入的整数的列表。 条件:最多有大约1MB的内存空间可用,但磁盘空间足够。且要求运行时间在5分钟以下,10秒为最佳结果。原创 2011-10-25 22:47:18 · 2501 阅读 · 1 评论 -
各种常规排序算法总结
1.插入排序 基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子表中的适当位置,直到全部记录插入完成为止。常规插入排序分两种,即直接插入排序和希尔排序。1.1直接插入排序 假设待排序的记录放在数组R[0...n-1]中,排序过程的某一中间时刻,R被划分成两个子区间R[0..i-1]和R[i..n-1],其中:前原创 2011-10-24 19:38:58 · 2439 阅读 · 1 评论 -
BIRCH算法学习
1.BIRCH算法概念 BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)全称是:利用层次方法的平衡迭代规约和聚类。BIRCH算法是1996年由Tian Zhang提出来的,参考文献1。首先,BIRCH是一种聚类算法,它最大的特点是能利用有限的内存资源完成对大数据集的高质量的聚类,同时通过单遍原创 2011-10-21 23:05:51 · 39165 阅读 · 2 评论