算法学习
LuckyJune34
这个作者很懒,什么都没留下…
展开
-
算法导论第二章总结:插入排序、归并排序
算法导论第二章总结 这一章简要介绍了一个贯穿全书的框架。对于这个框架,我的理解就是算法的流程吧。 (1) 问题:算法需要实现的功能。 (2) 思想:算法的设计。 (3) 实现:代码,本书中采用“伪代码”实现,需根据实际情况自己完成具体代码。 (4)原创 2015-05-21 19:27:51 · 1993 阅读 · 1 评论 -
算法导论第六章总结:堆排序
算法导论第六章总结 这一章介绍了另一种排序算法:堆排序。它的时间复杂度为 O(n lg n),且具有空间原址性(即任何时候只需要常数个额外的元素空间存储临时数据)。时间复杂度优于插入排序,与归并排序相同。且具有归并排序不具备的空间原址性这一优点。并且,这一章引入了“堆”这种数据结构。 一、堆 P84、85 (二叉)堆是一个数组,它可以被看成是一个近原创 2015-06-03 15:02:31 · 2071 阅读 · 0 评论 -
算法导论第七章总结:快速排序
算法导论第七章总结 对于包含 n 个数的输入数组来说,快速排序是一种最坏时间复杂度为 Θ(n2) 的排序算法。虽然最坏情况时间复杂度很差,但快速排序通常书实际应用中最好的选择,因为它的平均性能好:期望时间复杂度是 Θ(nlg n),而且 Θ (n lg n)中隐含的常数因子非常小,还能进行原址排序。一、描述 P95~P97 快速排序也原创 2015-06-09 21:05:04 · 2264 阅读 · 0 评论 -
算法导论第八章总结:线性时间排序
算法导论第八章总结:线性时间排序 这一章首先证明了对于 n 个元素的输入序列来说,任何比较排序(最终的次序依赖于元素之间的比较的排序方法)在最坏情况下都要经过 Ω(n lg n ) 次比较。因此,归并排序和堆排序是渐进最优的,并且任何已知的比较排序最多就是在常数因子上优于它们。 之后讨论了三种线性时间复杂度的排序算法:计数排序、基数排序和桶排序。这些算法是用原创 2015-06-17 22:07:12 · 1804 阅读 · 0 评论 -
散列表的详细剖析 (算法导论第11章)
注意: ① 由同一个散列函数、不同的解决冲突方法构造的散列表,其平均查找长度是不相同的。 ② 散列表的平均查找长度不是结点个数n的函数,而是装填因子α的函数。因此在设计散列表时可选择α以控制散列表的平均查找长度。 通过链接法解决冲突:成功查找的期望查找长度O(1+α), 不成功查找的平均查找长度也为O(1+α)。 开放寻址解决冲突:引入探查序列,对于α原创 2015-07-08 14:45:44 · 2560 阅读 · 0 评论