算法导论
文章平均质量分 83
Monkey_Online
通信工作
展开
-
【算法导论之一】插入排序精讲
我觉着还是先把代码贴上,然后讲解会比较好1. 插入排序 核心伪代码: for j do key while i原创 2013-01-16 20:59:18 · 1591 阅读 · 0 评论 -
【算法导论之二】快速排序算法
快速排序算法是排序算法集合中相对比较优秀的一个,运行速度快、效率高,而且它是“原地排序”节省内存,也是分治法思想的体现。算法思想:快速排序是在给定的集合中选取一个元素作为元数据,然后对集合进行分区操作,使小于该元数据的集合元素位于分区的左侧,大于该元数据的集合元素位于分区的右侧,经过一次循环后该元数据就放在了集合中的正确位置,然后在分区左侧和右侧再分别选取一个元数据进行排序,如此递归进行下来,原创 2013-05-04 10:39:29 · 1772 阅读 · 0 评论 -
【算法导论之三】大根堆堆排序
1. 堆的概念(默认为二叉堆) 堆数据结构是一种数组对象,它可以被视为一棵完全二叉树。树中每个结点与数组中存放该结点的那个元素对应。树的每一层都是填满的,最后一层可能除外(最后一层从一个节点的左子树开始填)。 二叉堆有两种:最大堆(大根堆)和最小堆(小根堆)。在这两种堆中,结点内的数值都要满足堆特性,其细节视堆的种类而定。在最大堆中,最大堆特性是指除了根以外的每个结点i,有:A原创 2013-05-07 22:40:32 · 3074 阅读 · 0 评论 -
【算法导论之四】计数排序
1. 计数排序的思想 我们之前接触过的例如:插入排序,归并排序,快速排序,堆排序等都是基于集合元素之间的比较这一基本的思想,它们执行的时间复杂度最优是趋于O(nlgn),而计数排序的运行机制不是基于集合元素之间的大小比较,什么???不做比较还能区分出元素之间的大小?是啊,算法就是这么伟大,我刚看它的时候也是激动不已呢。 计数排序的基本思想是:对每一个输入元素 x ,确定出小于原创 2013-05-10 19:41:24 · 1303 阅读 · 0 评论 -
【算法导论之五】散列表
1. 直接寻址表的局限,散列表的产生 直接寻址表:当关键字的全域U比较小时,直接寻址是一种简单有效的技术。假设某应用用到一个动态集合,其中每个元素都有一个取自全域U={0,1,... ,m-1}的关键字,此处的m是一个不很大的数。另外假设,没有两个元素具有相同的关键字。 为表示动态集合,我们用一个数组(或称直接寻址表)T[0..m-1],其中每个位置(或称为槽)对应全域U原创 2013-05-29 16:09:48 · 1805 阅读 · 0 评论 -
【算法导论之六】二叉排序树(Binary Search Tree)
1. 二叉排序树的定义 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树;2. java实现代码(注:以下代码参考网上优秀代码,均已编写实现)原创 2013-05-30 17:04:47 · 1629 阅读 · 0 评论 -
【算法导论之七】动态规划求解最长公共子序列
/************************************************************************//* 动态规划求解最长公共子序列 *//**************************************************************原创 2014-10-09 15:58:06 · 3882 阅读 · 0 评论