算法
yang_yulei
这个作者很懒,什么都没留下…
展开
-
查找(一)史上最简单清晰的红黑树讲解
查找(一)我们使用符号表这个词来描述一张抽象的表格,我们会将信息(值)存储在其中,然后按照指定的键来搜索并获取这些信息。键和值的具体意义取决于不同的应用。符号表中可能会保存很多键和很多信息,因此实现一张高效的符号表也是一项很有挑战性的任务。我们会用三种经典的数据类型来实现高效的符号表:二叉查找数、红黑树、散列表。二分查找我们使用有序数组存原创 2014-05-18 00:05:19 · 129743 阅读 · 84 评论 -
《编程珠玑》---笔记。浏览此文,一窥此书。
第一章:磁盘排序:对于一个提出的问题,不要未经思考就直接给出答案。要先深入研究问题,搞清楚这个问题的特点,根据这个特点,可能有更好的解决方案。 比如:文中:最初的需求只是“我如何对磁盘文件排序”。我们首先想到了经典的归并排序。但,进一步了解到排序的内容是10000000个记录,每条记录都是一个7位整数,且只有1M可用的内存。每条记录不相同。 【位示图法,详见我的关于排序原创 2014-06-30 23:53:01 · 14625 阅读 · 4 评论 -
排序(二)键索引、桶排序、位示图、败者树等(图文详解--败者树)
排序(二)以上排序算法都有一个性质:在排序的最终结果中,各元素的次序依赖于它们之间的比较。我们把这类排序算法称为比较排序。任何比较排序的时间复杂度的下界是nlgn。 以下排序算法是用运算而不是比较来确定排序顺序的。因此下界nlgn对它们是不适用的。 键索引计数法(计数排序)计数排序假设n个输入元素中的每一个都是在0到k区间的一个整数,其中k为原创 2014-05-28 08:28:30 · 8231 阅读 · 3 评论 -
排序(一)归并、快排、优先队列等(图文详解)
排序(一)初级排序算法选择排序思想:首先,找到数组中最小的那个元素。其次,将它和数组的第一个元素交换位置。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。 【图例】图中,x轴方向为数组的索引,y轴方向为待排序元素的值。 选择排序有两个很鲜明的特点:运行时间和输入无关。为了找出最原创 2014-05-28 08:28:04 · 19399 阅读 · 13 评论 -
查找(二)简单清晰的B树、Trie树详解
查找(二) 散列表散列表是普通数组概念的推广。由于对普通数组可以直接寻址,使得能在O(1)时间内访问数组中的任意位置。在散列表中,不是直接把关键字作为数组的下标,而是根据关键字计算出相应的下标。使用散列的查找算法分为两步。第一步是用散列函数将被查找的键转化为数组的一个索引。我们需要面对两个或多个键都会散列到相同的索引值的情况。因此,第二步就是一个处理碰撞冲突的过程,原创 2014-05-18 00:05:30 · 45273 阅读 · 7 评论