算法导论
文章平均质量分 65
Yangping_Peng
这个作者很懒,什么都没留下…
展开
-
堆排序
堆 (二叉)堆数据结构是一种数组对象,它的每个元素包含一个键K,满足下述的性质:对于数组中的位置i(其中1≤i≤,n为数组元素个数) Ki≥K2*i且 Ki≥K2*i+1 (1) Ki≤K2*i且 Ki原创 2013-07-10 22:52:28 · 613 阅读 · 0 评论 -
快速排序
1. 问题描述 2. 算法思想 利用分而治之和递归的思想将数据序列划分成越来越小的子表,再对子表排序,最后用递归的方法将排好序的子表合并为越来越大的有序序列。归并排序包括两个步骤: 1) 划分子表并排序 2) 合并子表 常见的为二路归并排序。 3. 伪代码实现 4. C++实现原创 2014-04-25 15:32:01 · 619 阅读 · 0 评论 -
二叉树
1. 定义 二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的、分别称作这个根的左子树和右子树的二叉树组成。 二叉树的5中基本形态: 满二叉树:一棵深度为k且有2k-1个结点的二又树称为满二叉树,每一层上的结点数都达到最大值。 完全二叉树:若一棵二叉树至多只有最下面的两层上结点的度数可以小于2,并且最下原创 2014-06-28 11:27:18 · 644 阅读 · 0 评论 -
二叉查找树
1. 引入 以顺序表作为存储结构的查找算法中,二分查找效率最高。但二分查找要求表按关键字有序,且不能用链表作存储结构,因此,当表的插入或删除操作频繁时,为维护表的有序性,势必要移动表中很多结点。这种由移动结点引起的额外时间开销,就会抵消二分查找的优点。也就是说,二分查找只适用于静态查找表。若要进行高效率的查找与删除操作,可采用动态查找表作为存储结构,如二叉查找树(Binary Search Tr原创 2014-06-27 15:52:09 · 853 阅读 · 0 评论 -
插入排序
1. 问题描述 2. 算法思想 将待排序数据序列分成已序部分sorted和未排序部分unsorted。每迭代一次,将unsorted中的一个元素key插入到sorted中。迭代结束时,即完成了对输入序列的排序。此思想类似打扑克牌时摸牌阶段。 3. 伪代码实现 4. C++实现 4. 算法复杂度分析 时间复杂度:原创 2014-04-01 21:48:37 · 581 阅读 · 0 评论 -
希尔排序
1. 问题描述 2. 算法思想 将待排序数据分成已排序部分sorted和未排序部分unsorted。插入表示的是将未排序部分unsorted中一个数据key插入到已排序的数据sorted当中。假设数据的个数为 N,初始时将第一个数据作为已排序部分,剩下的 N-1 个数据作为未排序部分。如此,总共执行 N-1 次插入,便可完成对输入数据的排序。 此思原创 2014-06-26 21:03:43 · 581 阅读 · 0 评论 -
归并排序
输入: n个数 。 输出: 输入序列的的重新排序 ,使得 。原创 2014-04-18 17:06:04 · 571 阅读 · 0 评论