
算法导论
文章平均质量分 92
风啸葛溪
这个作者很懒,什么都没留下…
展开
-
[算法导论]第十二章《二叉搜索树》
一、概念1.定义与性质(1)设x为二叉查找树中的一个结点,若y是x左子树中的一个结点,则key[y] (2)二叉查找树上执行的基本操作的时间与树的高度成正比。2.结构(1)结点结构:关键字key卫星数据data分别指向父、左右孩子的指针p, left, right3.在二叉查找树上的操作查找一个关键字:SEARCH(x, k)求最小关键字:MINIMUM原创 2014-03-19 20:03:49 · 915 阅读 · 0 评论 -
[算法导论]第十章《栈和队列》
1、栈和队列 栈和队列都是动态集合,且在其上进行DELETE操作所移除的元素的预先设定好的。栈规定元素是先进后出(FILO),队列规定元素是先进先出(FIFO)。栈和队列的实现可以采用数组和链表进行实现。 栈的基本操作包括入栈push和出栈pop,栈有一个栈顶指针top,指向最新如栈的元素,入栈和出栈操作操作都是从栈顶端进行的。 队列的基本操作包括入队enqueue和原创 2014-03-04 21:50:09 · 1147 阅读 · 0 评论 -
[算法导论]第二章《算法基础》
刚开始学习算法导论,目前打算把书上的伪代码转换成C++代码。插入排序算法伪代码INSERTION-SORT(A)1 for j←2 to length[A]2 do key←A[j]3 //Insert A[j] into the sorted sequence A[1..j-1]4原创 2013-11-01 22:06:27 · 1065 阅读 · 0 评论 -
[算法导论]第九章《中位数和顺序统计量》
1. 概念顺序统计量:在一个由n个元素组成的集合中,第i个顺序统计量是值该集合中第i小的元素。例如最小值是第1个顺序统计量,最大值是第n个顺序统计量。中位数:一般来说,中位数是指它所在集合的“中间元素”,当n为奇数时,中位数是唯一的,出现位置为n/2;当n为偶数时候,存在两个中位数,位置分别为n/2(上中位数)和n/2+1(下中位数)。选择问题: 输入:一个包含n个(不同的)数的原创 2014-01-04 17:05:49 · 1079 阅读 · 0 评论 -
[算法导论]第八章《线性时间排序》
本章先回顾了前面介绍的合并排序、堆排序和快速排序的特点及运行运行时间。合并排序和堆排序在最坏情况下达到O(nlgn),而快速排序最坏情况下达到O(n^2),平均情况下达到O(nlgn),因此合并排序和堆排序是渐进最优的。这些排序在执行过程中各元素的次序基于输入元素间的比较,称这种算法为比较排序。接下来介绍了用决策树的概念及如何用决策树确定排序算法时间的下界,最后讨论三种线性时间运行的算法:计数排序原创 2013-12-30 19:40:47 · 834 阅读 · 0 评论 -
[算法导论]第七章《快速排序》
本章介绍了快速排序及其算法分析,快速排序采用的是分治算法思想,对包含n个数的输入数组,最坏情况下运行时间为θ(n^2),但是平均性能相当好,期望的运行时间为θ(nlgn)。另外快速排序能够就地排序(我理解是不需要引入额外的辅助空间,每次划分能确定一个元素的具体位置),在虚拟环境中能很好的工作。1、快速排序的描述 快速排序算法采用的分治算法,因此对一个子数组A[p…r]进行快速排序原创 2013-12-26 20:07:03 · 872 阅读 · 0 评论 -
[算法导论]第六章《堆排序》
本章开始介绍了堆的基本概念,然后引入最大堆和最小堆的概念。全章采用最大堆来介绍堆的操作,两个重要的操作是调整最大堆和创建最大堆,接着着两个操作引进了堆排序,最后介绍了采用堆实现优先级队列。一.堆 (二叉)堆数据结构是一种数组对象,它可以被视为一棵完全二叉树。除了最底层外,该树是完全充满的,而且是从左到右填充的。树中每个节点与数组中的存放该节点值的那个元素对应。堆与完全二叉树的对应原创 2013-12-22 16:30:01 · 946 阅读 · 0 评论