算法导论
文章平均质量分 83
逆風的薔薇
这个作者很懒,什么都没留下…
展开
-
《算法导论》— Chapter 12 二叉查找树
序原创 2015-07-08 21:33:08 · 993 阅读 · 1 评论 -
《算法导论》— Chapter 9 中位数和顺序统计学
序在算法导论的第二部分主要探讨了排序和顺序统计学,第六章~第八章讨论了堆排序、快速排序以及三种线性排序算法。该部分的最后一个章节,将讨论顺序统计方面的知识。 在一个由n个元素组成的集合中,第i个顺序统计量是该集合中第i小的元素。正如我们经常遇到的中位数问题,一个中位数是它所在集合中的“中点元素”。对于一个有序元素序列,当元素个数为奇数时,中位数位于 i = (n+ 1)/ 2 位置,当元素个数为偶原创 2015-07-03 16:14:34 · 742 阅读 · 0 评论 -
《算法导论》— Chapter 6 堆排序
序本文主要介绍堆排序算法(HeapSort),堆排序像合并排序而不像插入排序,堆排序的运行时间为O(nlgn);像插入排序而不像合并排序,它是一种原地(in place)排序算法。在任何时候,数组中只有常数个元素存储在输入数组以外,这样,堆排序就把插入排序和合并排序的优点结合起来。 堆排序还引入了另外一种算法设计技术,利用某种数据结构(在此算法中为“堆”)来管理算法执行中的信息。堆数据结构不只在堆原创 2015-07-05 10:56:48 · 840 阅读 · 0 评论 -
《算法导论》 — Chapter 8 线性时间排序
序到目前为止,关于排序的问题,前面已经介绍了很多,从插入排序、合并排序、堆排序以及快速排序,每一种都有其适用的情况,在时间和空间复杂度上各有优势。它们都有一个相同的特点,以上所有排序的结果序列,各个元素的次序都是基于输入元素之间的比较,因此,把这类排序成为比较排序。 对一个含有n个元素的输入序列,任何比较排序在最坏情况下都要用(nlogn)次比较来进行排序,由此也可以知道合并排序和堆排序是渐进最优原创 2015-07-01 16:56:25 · 802 阅读 · 0 评论 -
《算法导论》 — Chapter 10 基本数据结构
序在本章中,要讨论如何通过使用了指针的简单数据结构表示动态集合。有很多的复杂的数据结构可以用指针来构造,本章介绍几种基本数据结构,包括栈、队列、链表,以及有根树。GitHub 第十章 程序实现代码栈栈和队列都是动态集合,在这种结构中delete操作去掉的元素是预先规定好的。栈数据结构实现的是一种先进后出(FILO)的策略。作用于栈上的Insert操作称为压入Push,而无参数的Delete操作称为弹原创 2015-07-06 17:15:04 · 887 阅读 · 0 评论 -
《算法导论》 — Chapter 7 快速排序
序快速排序(QuickSort)也是一种排序算法,对包含n个数组的输入数组,最坏情况运行时间为O(n^2)。虽然这个最坏情况运行时间比较差,但是快速排序通常是用于排序的最佳实用选择,这是因为其平均性能相当好,期望的运行时间为O(nlgn),且O(nlgn)中隐含的常数因子很小,另外它还能够进行就地排序在虚拟环境中也能很好的工作。 GitHub chapter 7 程序代码下载原理快速排序也和合并排原创 2015-07-07 10:50:51 · 1101 阅读 · 2 评论 -
《算法导论》— Chapter 11 散列表
1 序在很多应用中,都要用到一种动态集合结构,它仅支持INSERT、SEARCH以及DELETE三种字典操作。例如计算机程序设计语言的编译程序需要维护一个符号表,其中元素的关键字为任意字符串,与语言中的标识符相对应。实现字典的一种有效数据结构为散列表。 散列表是普通数组的推广,因为可以对数组进行直接寻址,故可以在O(1)的时间内访问数组的任意元素。对于散列表,最坏情况下查找一个元素的时间与在链表中原创 2015-07-07 21:06:21 · 1204 阅读 · 0 评论 -
《算法导论》— Chapter 15 动态规划
序算法导论一书的第四部分—高级设计和分析技术从本章开始讨论,主要分析高效算法的三种重要技术:动态规划、贪心算法以及平摊分析三种。 首先,本章讨论动态规划,它是通过组合子问题的解而解决整个问题的,通常应用于最优化问题。 动态规划算法的设计可以分为如下4个步骤:描述最优解的结构递归定义最优解的值按照自底向上的方式计算最优解的值由计算出的结果构造一个最优解15.1 装配线调原创 2015-08-05 20:58:14 · 1039 阅读 · 0 评论