![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 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 · 865 阅读 · 0 评论 -
[数据结构与算法]各种排序算法的稳定性和时间复杂度小结
冒泡法: 这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。直接插入排序:O(n*n)选择排序:O(n*n)快速排序:平均时间复杂度log2(n)*n,所有内部排序方法中最高好的,大多数情况下总是最好的。归并排序:log2(n)*n堆排序:log2(n)*n希尔排序:转载 2014-04-24 22:07:18 · 1249 阅读 · 0 评论 -
[数据结构与算法]第一周(二):线性表---位查询&&放苹果
位查询描述给出N个范围在[0, 65535]的整数,编程支持以下的操作: (1)修改操作:C d,所有的数都增加d。如果超过65535,把结果模65536。 0 (2)查询操作:Q i,统计在N个正整数中有多少个整数其对应的二进制形式的第i位二进制位为非0。0 最后,输出所有查询操作的统计值。输入 输入的第一行为两个正整数N,M,其中原创 2013-11-22 20:26:41 · 1363 阅读 · 0 评论 -
[算法导论]第六章《堆排序》
本章开始介绍了堆的基本概念,然后引入最大堆和最小堆的概念。全章采用最大堆来介绍堆的操作,两个重要的操作是调整最大堆和创建最大堆,接着着两个操作引进了堆排序,最后介绍了采用堆实现优先级队列。一.堆 (二叉)堆数据结构是一种数组对象,它可以被视为一棵完全二叉树。除了最底层外,该树是完全充满的,而且是从左到右填充的。树中每个节点与数组中的存放该节点值的那个元素对应。堆与完全二叉树的对应原创 2013-12-22 16:30:01 · 906 阅读 · 0 评论 -
[算法导论]第七章《快速排序》
本章介绍了快速排序及其算法分析,快速排序采用的是分治算法思想,对包含n个数的输入数组,最坏情况下运行时间为θ(n^2),但是平均性能相当好,期望的运行时间为θ(nlgn)。另外快速排序能够就地排序(我理解是不需要引入额外的辅助空间,每次划分能确定一个元素的具体位置),在虚拟环境中能很好的工作。1、快速排序的描述 快速排序算法采用的分治算法,因此对一个子数组A[p…r]进行快速排序原创 2013-12-26 20:07:03 · 831 阅读 · 0 评论 -
[算法导论]第八章《线性时间排序》
本章先回顾了前面介绍的合并排序、堆排序和快速排序的特点及运行运行时间。合并排序和堆排序在最坏情况下达到O(nlgn),而快速排序最坏情况下达到O(n^2),平均情况下达到O(nlgn),因此合并排序和堆排序是渐进最优的。这些排序在执行过程中各元素的次序基于输入元素间的比较,称这种算法为比较排序。接下来介绍了用决策树的概念及如何用决策树确定排序算法时间的下界,最后讨论三种线性时间运行的算法:计数排序原创 2013-12-30 19:40:47 · 786 阅读 · 0 评论 -
[算法导论]第九章《中位数和顺序统计量》
1. 概念顺序统计量:在一个由n个元素组成的集合中,第i个顺序统计量是值该集合中第i小的元素。例如最小值是第1个顺序统计量,最大值是第n个顺序统计量。中位数:一般来说,中位数是指它所在集合的“中间元素”,当n为奇数时,中位数是唯一的,出现位置为n/2;当n为偶数时候,存在两个中位数,位置分别为n/2(上中位数)和n/2+1(下中位数)。选择问题: 输入:一个包含n个(不同的)数的原创 2014-01-04 17:05:49 · 1040 阅读 · 0 评论 -
[数据结构与算法]第一周(一):线性表---多项式加法&&字符串插入
1:多项式加法描述 我们经常遇到两多项式相加的情况,在这里,我们就需要用程序来模拟实现把两个多项式相加到一起。首先,我们会有两个多项式,每个多项式是独立的一行,每个多项式由系数、幂数这样的多个整数对来表示。如多项式2x20- x17+ 5x9- 7x7+ 16x5+ 10x4 + 22x2- 15对应的表达式为:2 20 -1 17 5 9 - 7 7 16 5原创 2013-11-12 18:29:15 · 1977 阅读 · 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 · 1025 阅读 · 0 评论 -
[算法导论]第十章《栈和队列》
1、栈和队列 栈和队列都是动态集合,且在其上进行DELETE操作所移除的元素的预先设定好的。栈规定元素是先进后出(FILO),队列规定元素是先进先出(FIFO)。栈和队列的实现可以采用数组和链表进行实现。 栈的基本操作包括入栈push和出栈pop,栈有一个栈顶指针top,指向最新如栈的元素,入栈和出栈操作操作都是从栈顶端进行的。 队列的基本操作包括入队enqueue和原创 2014-03-04 21:50:09 · 1111 阅读 · 0 评论 -
[数据结构与算法]KMP算法总结
本文借助July和阮一峰两位大神的Bolg合并而来,只为自己记录,以便后面查看一。首先是阮一峰大神写的原理,他的图看起来容易理解:原文在此字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KM转载 2013-11-13 20:31:48 · 6227 阅读 · 5 评论