
算法导论
文章平均质量分 81
sushauai
专业是软件工程,从事web端开发,对android有所涉猎但不多,目前还在读研究生。。。
github地址:sushauai.github.io
展开
-
设n个不同的整数排好序后存于T[1..n]中,若存在一个下标i(1≤ i ≤ n),使得T[i]=i。试设计一个有效算法找到这个下标,要求算法在最坏情形下的计算时间为O(log n)
转自http://zmp1123.blog.163.com/blog/static/1193291592013314581911/设n 个不同整数排好序后存于T[0:n-1]中,若存在一个下标i,0≤i<n,是的T[i]=i,设计一个有效地算法找到这个下标。要求算法在最坏情况下的计算时间为O(logn)。算法描述如下:由于n 个整数是不同的,因此对任意0≤i<n-1 有T[i]≤T转载 2015-10-24 10:33:14 · 17866 阅读 · 1 评论 -
算法导论课后习题解析 第六章
算法导论课后习题解析 第六章6.1-1元素最少的情况是最底层只有一个叶子,即2h2h;元素最多的情况是整棵树是满的,即2h+1−12h+1−1。(这里按照叶子到根的最大边数来定义高度) 6.1-2设高度为h,那么可知2h≤n≤2h+1−12h≤n≤2h+1−1⇒h≤lgnh+1⇒h≤lgn⇒lgn−1h≤lgn⇒lgn−1转载 2016-01-09 22:19:37 · 1358 阅读 · 0 评论 -
算法导论课后习题解析 第七章
算法导论课后习题解析 第七章7.1-1蓝色部分代表不大于pivot,红色部分表示大于pivot13 19 9 5 12 8 7 4 21 2 6 1113 19 9 5 12 8 7 4 21 2 6 1113 19 9 5 12 8 7 4 21 2 6 119 13 19 5 12 8 7 4 21 2 6 119 5 13 19 12转载 2016-01-09 22:21:11 · 760 阅读 · 0 评论 -
算法导论课后习题解析 第四章 下
算法导论课后习题解析 第四章 下4.5-1a)a=2,b=4,f(n)=Θ(1),logba=12>0a=2,b=4,f(n)=Θ(1),logba=12>0符合情况1,T(n)=Θ(n1/2)T(n)=Θ(n1/2)b)a=2,b=4,f(n)=Θ(n1/2),logba=12a=2,b=4,f(n)=Θ(n1/2),logba=1转载 2016-01-10 11:04:32 · 3521 阅读 · 0 评论 -
算法导论课后习题解析 第四章 上
算法导论课后习题解析 第四章 上4.1-1返回只包含绝对值最小的元素的子数组。 4.1-21234567891011Maximun-Subarray(A) max = -infinity转载 2016-01-10 11:06:12 · 3667 阅读 · 0 评论 -
算法导论课后习题解析 第三章
算法导论课后习题解析 第三章3.1-1分情况讨论当f(n)≥g(n)f(n)≥g(n)时,max(f(n),g(n))=f(n)max(f(n),g(n))=f(n),存在c1=12,c2=1,n0>0c1=12,c2=1,n0>0使得0c1(f(n)+g(n))≤f(n)≤c2(f(n)+g(n))对于所有n≥n00同理可证当g(n)>f(n)g(n)>f转载 2016-01-10 11:07:05 · 4818 阅读 · 0 评论 -
算法导论课后习题解析 第二章
算法导论课后习题解析 第二章2.1-1初始 31 41 59 26 41 58第一遍 31 41 59 26 41 58第二遍 31 41 59 26 41 58第三遍 26 31 41 59 41 58第四遍 26 31 41 41 59 58第五遍 26 31 41 41 58 592.1-2把顺序改成非递增只要把判断大小时的条件改成转载 2016-01-10 11:08:11 · 1143 阅读 · 0 评论 -
算法导论课后习题解析 第一章
算法导论课后习题解析 第一章最近开始看算法导论了,但是发现官方给的参考答案只涵盖了一部分的习题,所以把自己做的答案分享一下,如有错误之处尽管指出,希望通过这个过程能与大家共同进步我看的版本是英文第三版 (Introduction to Algorithms, Third Edition),所有的题目分为每一节后的练习(Exercises)和每一章后的问题(Problem转载 2016-01-10 11:08:57 · 2639 阅读 · 0 评论 -
回溯法解旅行商问题(TSP)
回溯法解旅行商问题(TSP)旅行商问题,常被成为旅行推销员问题,是指一名推销员要拜访多个地点,如何找到再拜访每个地点一次后再回到起点的最短路径.进一步的抽象,可以转化为图论的问题,将每个城市看成图G(V,E)中的一个顶点,则旅行商问题可以转化为从一个顶点s出发,找到一条最短的路径从s出发,经过所有的顶点,最后回到s.最简单的解法就是枚举,枚举所有的路径,计算其每条路径的转载 2015-12-06 18:39:46 · 38167 阅读 · 2 评论 -
Java排序算法(十):桶式排序
Java排序算法(十):桶式排序桶式排序不再是一种基于比较的排序方法,它是一种比较巧妙的排序方式,但这种排序方式需要待排序的序列满足以下两个特征:待排序列所有的值处于一个可枚举的范围之类;待排序列所在的这个可枚举的范围不应该太大,否则排序开销太大。排序的具体步骤如下:(1)对于这个可枚举范围构建一个buckets数组,用于记录“落入”每个桶中元素的个数;转载 2015-11-28 10:36:13 · 500 阅读 · 0 评论 -
求非连续最长单调递增子序列
求非连续最长单调递增子序列简述:设计一个O(n2)以及O(nlogn)时间的算法,找出n个数组成的序列的最长单调递增子序列例如,4, 5, 8, 8, 4, 0, 8, 3, 6, 9, 这十个数字其中最长递增子序列为 4,5,8,9O(n2)的算法(找子问题)这个算法的角度是,遍历一遍原始数组,如果假设当前遍历的元素转载 2015-12-09 15:51:28 · 497 阅读 · 0 评论 -
试找出被9,8,7除时,余数分别为1,2,3的所有整数x。
《算法导论》练习31.5-2x ≡ 1 (mod 9)x ≡ 2 (mod 8)x ≡ 3 (mod 7) 根据中国余数定理,n=504a1 = 1, n1 = 9,m1 = 56,56-1 ≡ 5 (mod 9)a2 = 2, n2 = 8,m2 = 63,63-1 ≡ 7 (mod 8)a3 = 3, n3 = 7,m2 = 72,72-1 ≡ 4 (mod转载 2015-12-26 21:45:07 · 1307 阅读 · 0 评论 -
中国余数定理
我国古代数学名著《孙子算经》载有一道数学问题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?”这里的几何指多少的意思。翻译成数学语言就是:求正整数N,使N除以3余2,除以5余3,除以7余2。建立数学原型:已知m1、m2、m3是两两互质的正整数,求最小正整数x,使它被m1、m2、m3除所得余数分别为C1、C2、C3 。列成同余式子:x≡a1转载 2015-12-26 21:46:36 · 1044 阅读 · 0 评论 -
算法导论第三十一(31)章数论算法
31.1 基础数论概念先简要回顾一下书中内容:整除性与约数:d|a 表示为d整除a,存在整数k,使得a=kd 若d≥0,则称d是a的约数。素数与合数:素数:如果能被平凡约数1和自身整除即为素数。 合数:如果整数a>1且不是素数,则称之为合数。除法定理,余数和等模转载 2015-12-26 21:47:43 · 10695 阅读 · 1 评论 -
RSA算法应用及证明
最近在搞hadoop,因为它用到了ssh,上网查了查,顺便把ssh所用到的RSA算法看了看,觉得很不错,写下来梳理一下,也算作备忘。RSA定理若P和Q是两个相异质数(即都为质数且最大公约数为1),另有正整数e和d,其中d的值与( P - 1 )( Q - 1 )的值互质(即最大公约数为1),并使得( ed ) mod ( P - 1 )( Q - 1 ) = 1。有正整数A,且转载 2015-12-26 21:48:52 · 1142 阅读 · 0 评论 -
算法导论31.7-2 证明
由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) = 2ed-1现已知φ(n)=(p-1)(q-1)和n=pq可求得 p+q=n+1-φ(n)即原创 2015-12-26 21:50:10 · 974 阅读 · 0 评论 -
赫夫曼树
哈夫曼编码(Huffman coding)的那些事,(编码技术介绍和程序实现)前言 哈夫曼编码(Huffman coding)是一种可变长的前缀码。哈夫曼编码使用的算法是David A. Huffman还是在MIT的学生时提出的,并且在1952年发表了名为《A Method for the Construction of Minimum-Redundancy Codes》的文章。转载 2016-01-08 15:19:15 · 630 阅读 · 0 评论 -
字符串匹配算法
字符串匹配算法字符串匹配问题的形式定义:文本(Text)是一个长度为 n 的数组 T[1..n];模式(Pattern)是一个长度为 m 且 m≤n 的数组 P[1..m];T 和 P 中的元素都属于有限的字母表 Σ 表;如果 0≤s≤n-m,并且 T[s+1..s+m] = P[1..m],即对 1≤j≤m,有 T[s+j] = P[j],则说模式 P 在文本 T转载 2016-01-08 15:11:25 · 773 阅读 · 0 评论 -
算法导论-16.1-4 活动教室选择问题
算法导论-16.1-4 活动教室选择问题 u012243115 2014-11-14 92 查看 0评论 原文添加收藏题目:假设要用很多个教室对一组活动进行调剂。我们希望应用尽可能少的教室来调剂所有的活动。请给出一个有效的贪心算法,来断定哪一个活动应应用哪一个教室。(这个题目也被成为区间图着色(interval-graph coloring)题转载 2015-12-22 21:39:16 · 1235 阅读 · 0 评论 -
算法导论 动态顺序统计与区间树
本文的基础是红黑树 算法导论–红黑树通过在基础的数据结构中添加一些附加信息,来扩张一种标准的数据结构,然后编写新的操作来支持所需要的应用。下面是介绍在红黑树的基础上扩张的数据结构。1.动态顺序统计动态顺序统计可以在O(lgn)时间内确定任何的顺序统计量(即在n个元素的集合中,能在O(lgn)的时间内确定第i小的元素),同时也可以在O(lgn)的时间内计算一个元素的秩(即它在转载 2015-12-09 15:50:32 · 792 阅读 · 0 评论 -
算法设计 - LCS 最长公共子序列&&最长公共子串 &&LIS 最长递增子序列
虽是读书笔记,但是如转载请注明出处 http://segmentfault.com/blog/exploring/.. 拒绝伸手复制党本章讲解:1. LCS(最长公共子序列)O(n^2)的时间复杂度,O(n^2)的空间复杂度;2. 与之类似但不同的最长公共子串方法。最长公共子串用动态规划可实现O(n^2)的时间复杂度,O(n^2)的空间复杂度;还可以进一步优化,用后缀数组的转载 2015-11-30 20:16:13 · 796 阅读 · 0 评论 -
最长递增子序列
问题给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)。例如:给定一个长度为6的数组A{5, 6, 7, 1, 2, 8},则其最长的单调递增子序列为{5,6,7,8},长度为4. 解法1:最长公共子序列法这个问题可以转换为最长公共子序列问题。如例子中的数组A{5,6, 7, 1, 2, 8},则我们排序该数组得到数组A‘{1, 2, 5转载 2015-12-09 15:45:14 · 294 阅读 · 0 评论 -
编辑距离问题算法分析
一、问题分析:本题提出了一些关于将字符串x[1..m]转换成y[1..n]的操作。这些操作有复制、替代、删除、插入、互换和终止。这些操作所需的开销是不同的,但每个操作的开销都可以看是一个我们已经的常量,我们假设复制和替代这类操作的开销要比插入和删除这类操作的开销少。我们用x[1..m]来保存原字符串,数组下标用i表示,初始化为1;用y[1..n]来保存转换后的字符串,数组下标用j来表示,初转载 2015-12-09 15:43:05 · 1058 阅读 · 0 评论 -
16.1-4
问题的描述有n个活动,对于其中的每个活动Ai均有一个开始时间Si和结束时间Fi表示该活动的举办时间是[Si, Fi), 其中0 为了与活动选择问题区别,我们将该问题成为活动全选择问题。 等价的描述一:活动全选择问题模型可以转化成一个区间图,其顶点为活动,如果两个活动不兼容则在其对应的顶点上连一条边。为使任两个相邻结点的颜色互不相同,所需的最少颜色数对应原创 2015-12-12 20:47:55 · 414 阅读 · 0 评论 -
算法导论学习笔记——桶排序
[java] view plaincopyimport java.util.ArrayList; import java.util.Iterator; /** * 桶排序:桶排序的思想是把区间[0,1)划分成n个相同大小的子区间,称为桶,然后将n个输入数分布到各个桶中去。 * 因为输入数均匀且独立分布在[0,1)上,所以,一般不会有很多数落在转载 2015-11-28 10:35:10 · 634 阅读 · 0 评论 -
最长单调子序列问题
概念序列的子序列,可以由从这个序列中去掉0个或多个元素而得来。所以子序列 可以是由其父序列中不连续的元素组成,但相对顺序不能改变。公共子序列指 的是,假如序列Z既是X的子序列,又是序列Y的子序列,那么称Z为X和Y的公共子序 列。两个序列最长的公共子序列就被称之为最长公共子序列。最长公共子序列, 又被称之为最长公共子串,译自英文名Longgest Common Subsequence,可以缩转载 2015-11-28 10:19:46 · 885 阅读 · 0 评论 -
算法导论 9.3-8 求两个数组的中位数
一、题目设X[1..n]和Y[1..n]为两个数组,每个都包含n个已排好序的数,给出一个求数组X和数组Y中所有2n个元素的中位数的O(lgn)时间的算法二、思路递归求解该问题,解题规模不断减半,最后剩下4个元素时,得到问题的解,本文求的是下中位数,下中位数的特点是:(1)当n为奇数,令n = 2 * m + 1,下中位数是第m+1小的数,数组中有转载 2015-11-28 10:30:34 · 733 阅读 · 0 评论 -
算法导论7.4-5
题目:当输入数据已经“几乎有序时”,插入排序很快,在实际应用中,我们可以利用这一特点来提高快速排序的速度。当对一个长度小于k的子数组调用快速排序时,让它不做任何排序就返回。当上一层的快速排序调用返回后,对整个数组运行插入排序完成排序过程。证明:这一排序算法的期望时间复杂度为O(nk+nlg(n/k)).解决方案: quicksort在递归到只有几个元素大小的数组时开始用插入转载 2015-11-28 10:28:14 · 1116 阅读 · 0 评论 -
算法导论 Exercises 9.3-9
算法导论 Exercises 9.3-9Problem Description:Professor Olay is consulting for an oil company, which is planning a large pipeline running east to west through an oil field of n wells.From each well,转载 2015-11-28 10:34:07 · 868 阅读 · 0 评论 -
算法导论第九章课后答案
9.1-1 证明:在最坏情况下,找到n个元素中第二小的元素需要n+向上取整lgn-2次比较。我们对于查找第2小元素分成2步。step1:我们先将数组中的元素两两成对比较,共需n/2次比较,那么就有n/2个元素是较小的元素,然后再将这些较小的元素再次两两成对比较,又淘汰一半,重复这样的循环,每次淘汰一半元素直到只剩下1个元素,该元素就是最小元素。经过的比较次数为S=n/2+n/4+...转载 2016-01-17 21:17:09 · 9973 阅读 · 3 评论 -
算法导论 Exercises 9.3-9
算法导论 Exercises 9.3-9Problem Description:Professor Olay is consulting for an oil company, which is planning a large pipeline running east to west through an oil field of n wells.From each well,转载 2016-01-17 22:03:43 · 1573 阅读 · 0 评论 -
算法导论 第13章 红黑树
算法导论 第13章 红黑树 分类:算法导论(79) 版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[-]一概念定义与性质结构红黑树上的操作二代码三练习1 红黑树的性质2 旋转3 插入4 删除四思考题13-1 动态持久集合13-2 红黑树上的连接操作一、转载 2016-01-18 10:36:31 · 456 阅读 · 0 评论 -
算法导论第十五章动态规划
算法导论第十五章动态规划时间 2014-08-18 13:39:25 优快云博客原文 http://blog.youkuaiyun.com/z84616995z/article/details/38011391主题 动态规划概述 :1.动态规划是通过组合子问题的解而解决原问题的。2.动态规划适用于子问题不是独立的情况,也就是各子问题的包含公共的子子问题转载 2016-01-19 16:43:35 · 3536 阅读 · 0 评论 -
算法导论16.1 活动选择问题
这篇文章主要讲述一个经典问题:活动选择问题。并给出该问题的贪心算法实现和动态规划实现。对于该问题的描述,在算法导论第16章给出了详细的讲解,这里就不做解释说明了,下面给出贪心算法的Java语言实现:package chapter1.homework1;import java.util.*;public class ActivitySelector { private int转载 2015-12-22 21:36:50 · 683 阅读 · 0 评论 -
随机素数法
素数测试在介绍素数测试相关算法之前,先要引入欧拉定理和费马定理。欧拉定理:对于任意的整数n>1,a^φ(n) ≡1(mod n)对所有的a∈Z*n都成立。其中φ(n)为Z*n的规模。φ(n)=n∏(1-1/p).可以理解成初始有一张{0,1,…,n-1}的表,然后对每个能整除n的p,在表中删除p的倍数后剩下的数。Z*n定义为{2,3…n-1}中与n互质的元素。例如:Z转载 2015-12-26 21:51:33 · 1712 阅读 · 0 评论