算法导论
文章平均质量分 78
yukid
这个作者很懒,什么都没留下…
展开
-
算法导论堆实现
#include "iostream"using namespace std;int heap_size;int left(int i){ return 2*i;}int right(int i){ return 2*i+1;}void max_Heapify(int A[],int i){ int l,r,larg原创 2014-09-26 17:05:02 · 383 阅读 · 0 评论 -
算法导论-16.1-3
题目:假设要用很多个教室对一组活动进行调剂。我们希望应用尽可能少的教室来调剂所有的活动。请给出一个有效的贪心算法,来断定哪一个活动应应用哪一个教室。(这个题目也被成为区间图着色(interval-graph coloring)题目。我们可作出一个区间图,其顶点为已知的活动,其边连接着不兼容的活动。为使任两个相邻结点的色彩均不雷同,所需的起码色彩对应于找出调剂给定的所有活动所需的起码教室转载 2014-11-30 15:45:23 · 900 阅读 · 0 评论 -
算法导论15.4-5、6 最长递增子序列(n平方)和(nlogn)
设序列X(n),最长递增子序列长度为m,考虑长度为i的递增子序列,这种序列有多个,最小的末尾元素记为L(i),可以得到 L(1) 从左到右扫描序列X(n),L(1) 初始为x(1),再引入一个当前最大长度K,初始为1,K表示目前扫描过的序列包含的最长递增子序列的长度,此时L(1)...L(K)有意义。读入一个数据x,如果L(i)是大于x中最小的,则x也是一个递增子序列的末尾元素,按照L(i转载 2014-11-23 15:38:54 · 1343 阅读 · 0 评论 -
《算法导论》学习笔记(4)——红黑树(c语言实现)
#include #include typedef int EleType;typedef enum Color //颜色属性:红、黑{ RED = 0, BLACK = 1} Color;typedef struct Node{ struct Node* left; struct Node* right; struct Node* parent; Color co转载 2014-10-31 20:47:03 · 495 阅读 · 0 评论 -
《算法导论》学习笔记(3)——二叉搜索树
二叉搜索树是以一棵二叉树来组织的。在二叉树的基础上,增加了一些限制:对于任何结点x,其左子树的任何结点都不大于x.key,右子树的任何结点都不小于x.key。二叉树与二叉堆: 二者都是基于二叉树来构建的数据结构,但是二者的区别在于:二叉堆(最大堆)的每个结点的值都大于等于其两个儿子的值,二叉查找树的父亲是小于等于其右孩子的。如转载 2014-10-31 20:49:05 · 403 阅读 · 0 评论 -
算法导论 Chapter 9.3 Selection in worst-case linear time
问题描述:本节要求以最坏情况下O(n)的时间复杂度找到长度为n的数组中第 i 大的数。 解决方案:《算法导论》上提供了一个算法,该算法实质上是利用了快排中划分的思想,但其通过一些比较复杂的预处理工作保证了快排划分的均匀,并且能够从理论上证明其最坏情况下的时间复杂度可以达到O(n)。算法步骤:1、如图所示,将n个数分成5个一组,共有⌊n转载 2014-10-12 09:46:01 · 1007 阅读 · 0 评论 -
递归求数组最大最小值(分治思想)
求数组最大最小值我们可以用遍历或者最简单的排序方法来实现,但是那样子的时间复杂度将会大很多,因此我们可以采用分治思想来求最大最小值,即先求左右两部分,即先求出左半部分的最大最小值,再求出右半部分的最大最小值,然后再把左右两部分的最大最小值合起来求总的最大最小值。转载 2014-09-29 12:57:38 · 1225 阅读 · 0 评论 -
二叉查找树与红黑树原理和程序全面介绍
转载请注明出处http://blog.csdn.net/yankai0219/article/details/8273542学习方法:我主要是参考算法导论以及Nginx中rbtree.h和rbtree.c两部分内容来学习红黑树的。网上有很多关于红黑树的介绍,不可否认,有很多文章讲的很详细,但是我想经典毕竟是经典,去阅读算法导论,将会使你更加明白红黑树的原理。一句话,读算法导论,转载 2014-10-26 19:14:07 · 482 阅读 · 0 评论 -
算法导论7.4-5
题目:当输入数据已经“几乎有序时”,插入排序很快,在实际应用中,我们可以利用这一特点来提高快速排序的速度。当对一个长度小于k的子数组调用快速排序时,让它不做任何排序就返回。当上一层的快速排序调用返回后,对整个数组运行插入排序完成排序过程。证明:这一排序算法的期望时间复杂度为O(nk+nlg(n/k)).解决方案: quicksort在递归到只有几个元素大小的数组时开始用插入转载 2014-10-06 17:14:48 · 2330 阅读 · 0 评论 -
算法导论 第14章 14.3 区间树
一、综述1.区间树区间树中一种对动态集合进行维护的红黑树,该集合中的每个元素x都包含一个区间int[x]2.基础数据结构红黑树,其中每个结点x包含一个区间域int[x],x的关键字为区间的低端点3.附加信息max[x]:以x为根的子树中所有区间的 端点的最大值4.对信息的维护max[x] = max(high[int[x]], max转载 2014-11-07 19:44:29 · 579 阅读 · 0 评论 -
算法导论31.7-2 证明
31.7-2 证明:如果Alice的公开指数e等于3,并且对方获得Alice的秘密指数d,0由ed=1(mod φ(n)),可设 ed = k*φ(n)+1,k∈Z由e = 3,0<d<φ(n)得:0<ed<3*φ(n)因此 0 < k*φ(n)+1 < 3*φ(n),0<k<3,k=1或2即 ed = φ(n)+1 或 ed = 2φ(n)+1,φ(n) = ed-1或φ(n) = 2转载 2014-12-20 21:04:24 · 931 阅读 · 0 评论