![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法导论
黑眼圈的意志
自我学习的地方
展开
-
常用的时间复杂度排序
一些常用的时间复杂度排序:O(lgn) √n) 这里,我们默认lg始终是以2为底,符号“^”表示乘方的意思原创 2013-11-29 21:55:53 · 964 阅读 · 0 评论 -
2.2-3 & 2.2-4
2.2-3n/2个;n个;O(n)解答:平均查找一般就能查出结果,前提是序列中有要查询的元素。最坏情况就是没有该元素出现在待查队列中,要进行全部扫描,所以查n次,O(n)为时间复杂度。2.2-4首先分析问题的要求,找出要解决问题的一个思路。然后寻找多个有效的解决问题方法,中啊出相对最好的方法,然后改进算法,在一定范围内缩小数据规模。原创 2013-12-05 21:01:00 · 457 阅读 · 0 评论 -
2.2-1 & 2.2-2
2.2-1: 渐进为O【O内H的那种,我表示不会打】(n^3)2.2-2:C++代码:void ChooseSort(int *A,int length){ int temp = 0; int temp2; for(int i = 0;i < length;i++){ for(int j = i;j < length;j++原创 2013-12-04 22:06:42 · 466 阅读 · 0 评论 -
2.1-3
伪代码:Line_Search(A,key)for j <- 1 to length[A] do if A[j] == key return j breakreturn error循环不变式证明:初始化:此时j = 1,而子数组为A[1..j-1]。它只包含一个元素A[1],而之前,即空数组不包含关键字key是显而易见的,而当前值与子原创 2013-12-01 20:10:44 · 422 阅读 · 0 评论 -
2.3-2
分治排序无哨兵位伪代码:MERGE(A,p,q,r) n1 <- q-p+1 n2 <- r-q; create arrays L[1...n1] and R[1...n2] for i <- 1 to n1 do L[i] <- A[p+i-1] for j <- 1 to n2 do R[j] <- A[q+j]原创 2013-12-08 21:47:34 · 465 阅读 · 0 评论 -
2.1-2
伪代码:Insertion_Sort(A)for j <- 2 to length[A] do key <- A[j] i <- j-1 while i > 0 and A[i] < key do A[i+1] <- A[i] i <- j-1 A[i+1] C++实现原创 2013-12-01 20:03:51 · 442 阅读 · 0 评论 -
2.1-4
伪代码:BinNum_Add(A,B,C,n)for j <- n+1 to 1 do C[j] <- 0for i <- n to 1 do m <- C[i+1] + A[i] + B[i] C[i+1] <- m % 2; C[i] C++实现:void BinNumAdd(int *A,int *B,int *C,n){原创 2013-12-01 20:19:39 · 407 阅读 · 0 评论 -
2.3-4
C++代码实现:MERGE(A,p,q,r) n1 <- q-p+1 n2 <- r-q; create arrays L[1...n1] and R[1...n2] for i <- 1 to n1 do L[i] <- A[p+i-1] for j <- 1 to n2 do R[j] <- A[q+j] m1原创 2013-12-08 21:52:04 · 437 阅读 · 0 评论 -
找出所缺的整数
某数组A[1...n]含有所有从0到n的整数,但其中有一个整数不在数组中。通过利用一个辅助数组B[0...n]来记录A中出现的整数,很容易在O(n)时间内找出所缺的整数。但如果A中的元素是以二进制表示的,我们所能用的唯一的操作就是取A[i]的第j位。第一种以十进制的代码,是利用一个辅助数组来进行计数,然后扫描辅助数组,从而来确定所缺少的数字:#includeusing name原创 2013-11-26 22:12:50 · 499 阅读 · 0 评论 -
对于循环不变式证明的总结
对于循环不变式,必须证明它的三个性质:初始化:他在循环的第一轮迭代开始之前,应该是正确的保持:如果再循环的某一次迭代开始之前它是正确的,那么,在下一次迭代开始之前,它也应该保持正确终止:当循环结束时,不变式给了我们一个有用的性质,它有助于表明算法是正确的注明:当头两个性质成立时,你就能保证循环不变式在循环的每一轮迭代开始之前,都是正确的原创 2013-11-29 22:08:29 · 725 阅读 · 0 评论 -
INSERTION-SORT(A)的C++代码
书中伪代码:for j <- 2 to length[A] do key <- A[j] i <- j - 1 while i > 0 and A[i] > key do A[i+1] <- A[i] i <- i -1 A[i+1] 我的C++代码实现:void I原创 2013-11-29 22:03:42 · 550 阅读 · 0 评论 -
《算法导论》学习
开始攀爬一座巨大的山峰——《算法导论》这个目录下包含一些书上的伪代码用C++实现的代码,还有书上的习题我自己做的解答因为我水平实在有限,如有错误,请各位一定要指出,谢谢大家了!原创 2013-11-29 21:49:14 · 639 阅读 · 0 评论 -
分治排序(有哨兵位)
C++代码:#includevoid MERG(int *A,int p,int q,int r){ int n = p - q + 1; int m = r - q; int L = new int [n+1]; int R = new int [m+1]; int i, j; for(i = 0;i < n - 1;i++)原创 2013-12-05 21:09:54 · 521 阅读 · 0 评论