算法导论
文章平均质量分 88
allinallinallin
这个作者很懒,什么都没留下…
展开
-
《算法导论》实验二:最长公共子序列(LCS)算法
最长公共子序列(LCS)算法一、题目描述二、算法设计与分析三、核心代码四、实验结果五、总结六、附录(C++源代码)一、题目描述 子序列定义:X=(x1,x2,····,xm),序列Z=(z1,z2,····,zk)是X的一子序列,必须满足:若X的索引中存在一个严格增的序列i1,i2,····,ik,使得对所有的j=1~k,均有xij=zj。 两个序列的公共子序列:Z是X和Y的原创 2015-12-13 15:32:44 · 4563 阅读 · 0 评论 -
《算法导论》实验一:快速排序算法及其优化
快排序算法及其优化版权声明:本文为博主原创文章,未经博主允许不得转载。题目描述算法设计与分析核心代码结果与分析备注总结附录(Java源代码)题目描述 当输入数据已经“几乎有序时”,插入排序很快,在实际应用中,我们可以利用这一特点来提高快速排序的速度。当对一个长度小于k的子数组调用快速排序时,让它不做任何排序就返回。当上一层的快速排序调用返回后,对整个数组运行插入排序完成排序过程。原创 2015-12-13 14:54:21 · 4729 阅读 · 0 评论 -
《算法导论》实验三:最佳调度问题的回溯算法
设有n个任务由k个可并行工作的机器来完成,完成任务i需要时间为 。试设计一个算法找出完成这n个任务的最佳调度,使完成全部任务的时间最早。(要求给出调度方案)原创 2015-12-14 14:19:07 · 10142 阅读 · 3 评论 -
《算法导论》实验四:哈夫曼(Huffman)编码问题(C++实现)
哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法。其压缩率通常在20%~90%之间。哈夫曼编码算法用字符在文件中出现的频率表来建立一个用0,1串表示各字符的最优表示方式。原创 2015-12-14 22:52:10 · 10379 阅读 · 0 评论 -
《算法导论》实验五:最近点对算法(C++)
最近点对问题: 在n>=2个点的集合Q中寻找最近点对。 “最近”是指通常意义下的欧几里得距离:即点p1(x1,y1)和p2(x2,y2)之间的距离为:sqrt((x1-x2)2 +(y1-y2)2)。原创 2015-12-15 14:59:00 · 19841 阅读 · 12 评论 -
《算法导论》实验六:红黑树插入算法(C++)——控制台树型显示
我们知道一颗高度为h的二叉搜索树,可以支持任何一种基本动态集合操作,且其时间复杂度均为O(h)。因此,二叉搜索树的性能与树的高度密切相关,如果树的高度较高时,这些集合操作可能并不比在链表上执行得快。所以让树中的元素尽量地平衡在树的两侧,使得树的高度尽量地低,便可提高二叉搜索树的性能。而红黑树(red-black- tree)是许多“平衡的”查找树中的一种,可以保证在最坏情况下基本动态集合。原创 2015-12-15 15:51:47 · 3503 阅读 · 0 评论 -
《算法导论》实验七:区间树上的重叠区间查找算法(C++)——控制台树型显示
区间树(interval tree)是一种对动态集合进行维护的扩张红黑树,因此可在实验二红黑树的基础上进行扩张。为此,本实验(实验三)在实验二的基础上对红黑树的节点增加新的附加信息,并设计新的操作。从而熟悉并实现区间树上的重叠区间查找算法,分析该算法的性能。原创 2015-12-15 19:16:16 · 7541 阅读 · 0 评论