
算法导论
文章平均质量分 80
该专栏主要是本人在算法导论中一些问题的题解,以及书中部分算法的实现。
007havegone
这个作者很懒,什么都没留下…
展开
-
算法导论 练习14.1-7
14.1-7 说明如何在O(nlgn)O(nlgn)O(nlgn)时间内,利用顺序统计树对大小为nnn的数组中的逆序对(见思考题2-4)进行计树。这道题和算法导思考题论2-4一致,当时采用了归并排序和线段树进行解决,在另外一篇博客中给出了题解。算法导论 思考题2-4这里我们将采用书中的顺序统计树(order-statistic tree)来解决。其实本质上和线段树类似,都是采用一种支持O(lg...原创 2019-08-20 18:13:27 · 403 阅读 · 2 评论 -
数据结构-红黑树
文章目录数据结构-红黑树1、红黑树简介红黑树的性质红黑树结点红黑树的5个性质2、红黑树的操作旋转插入操作情况 1:z的叔结点y为红色情况 2:z的叔结点y为黑色的且z是一个右孩子情况 3:z的叔结点y为黑色的且z是一个左孩子删除操作情况 1:x的兄弟结点w是红色的情况 2:x的兄弟结点w是黑色的,而且w的两个子结点都是黑色的情况 3:x的兄弟结点w是黑色的,w的左孩子是红色的,w的右孩子是黑色的。...原创 2019-08-18 15:08:05 · 540 阅读 · 0 评论 -
算法导论 思考题12-1
12-1(带有相同关键字的二叉搜索树)相同关键字给二叉搜索树的实现带来了问题。a. 当用TREE-INSERT将nnn个其中带有相同关键字的数据插入到一棵初始为空的二叉搜索树中时,其渐进性能是多少?最坏情况下,所有关键字相同,那么将形成一个单链。时间复杂度为O(n2)O(n^2)O(n2)。 建议通过在第5行之前测试z.key=x.keyz.key = x.keyz.key=x.key和在...原创 2019-08-17 15:18:15 · 558 阅读 · 0 评论 -
算法导论 练习12.3
12.3-1 给出TREE-INSERT过车过程的一个递归版本//实现1TREE-INSERT(T,z) if T.root = NIL //空树 T.root = z z.p = NIL else //非空,递归查找合适位置 TREE-INSERT-RECURSIVE(T.root,z)TREE-INSERT-RECU...原创 2019-08-12 17:59:20 · 809 阅读 · 0 评论 -
算法导论 练习12.2
12.2-1 假设一棵二叉搜索树中的结点在1到1000之间,现在想要查找值为363得到结点,下面序列那个不是查找过的序列。a. 2,252,401,398,330,344,397,3632,252,401,398,330,344,397,3632,252,401,398,330,344,397,363。b. 924,220,911,244,898,258,362,363924,220,911,...原创 2019-08-12 11:17:49 · 812 阅读 · 0 评论 -
算法导论 练习12.1
12.1-1 对于关键字集合{1,4,5,10,16,17,21}\{1,4,5,10,16,17,21\}{1,4,5,10,16,17,21},分别画出高度为2、3、4、5和6的二叉搜索树。这里说明一下:算法导论中定义的高度是根节点到叶节点的最大距离高度为2: 高度为3: 高度为4: 10 10 ...原创 2019-08-09 01:05:32 · 773 阅读 · 0 评论 -
算法导论 练习10.4-5二叉树的遍历
10.4-5 给定一个n结点的二叉树,写出一个O(n)O(n)O(n)时间的非递归过程,将该树的每一个结点的关键字输出。要求除该树本身的存储空间外只能使用固定量的额外存储空间,且中过程中不得修改该树,即使是暂时的修改也不允许。要完成O(1))O(1))O(1))的空间内遍历该树,需要每个结点需要能访问其父节点进行回溯。struct Tree{ Tree *parent; Tr...原创 2019-08-08 15:48:52 · 501 阅读 · 0 评论 -
算法导论 思考题9-2
9-2 (带权中位数)对分别具体以正权重w1,w2,⋯ ,wnw_1,w_2,\dotsb,w_nw1,w2,⋯,wn,且满足∑i=1nwi=1\sum_{i=1}^{n}{w_i=1}∑i=1nwi=1的nnn个互异的元素x1,x2,⋯ ,xnx_1,x_2,\dotsb,x_nx1,x2,⋯,xn来说,带权中位数xkx_k...原创 2019-08-03 17:23:41 · 1596 阅读 · 0 评论 -
算法导论 练习9.3-8两个有序数组的中位数
9.3-8 设X[1…n]和Y[1…n]为两个数组,每个都包含n个有序的元素,请设计一个O(lgn)O(lgn)O(lgn)时间的算法找出数组X和Y中所有2n个元素的中位数。下面假设中位数(低中位数,数组长度偶数时较小的那个)在数组XXX中。a、X[k]=mX[k]=mX[k]=m为中位数,对于数组XXX,有kkk个元素小于等于X[k]X[k]X[k],同时有n−kn-kn−k个元素大于等于X...原创 2019-08-01 21:18:19 · 534 阅读 · 0 评论 -
算法导论9.1-1找第二小的元素
文章目录算法导论9.1-11、证明:在最坏情况下,找到n个元素中第二小的元素需要 n+ceil(lgn)-2 次比较。(提示:可以同时找到最小元素)1.证明 n-12.证明 ceil(lg) -12.算法实现:3、总结算法导论9.1-11、证明:在最坏情况下,找到n个元素中第二小的元素需要 n+ceil(lgn)-2 次比较。(提示:可以同时找到最小元素)做以下断言:无论采用何种比较算法,在...原创 2019-07-26 18:29:06 · 2115 阅读 · 0 评论 -
算法导论 思考题6-3(Young氏矩阵)
思考题6-3(Young氏矩阵)在一个m×nm\times nm×n的Young氏矩阵(Young tableau)中,每一行的数据都是从左到右排序的,每一列的数据都是从上到下排列的。Young氏矩阵中也会存在一些为∞\infin∞的数据项,表示那些不存在的数据。因此,Young氏矩阵可以用来村出r≤mnr \leq mnr≤mn个有限的数。a. 画出一个包含元素{9,16,3,2,4,8,5,...原创 2019-08-22 00:37:17 · 482 阅读 · 0 评论 -
算法导论 思考题6-2
6-2(对d叉堆的分析)d叉堆与二叉堆很类似,但(一个可能的例外是)其中的每个非叶节点有d个孩子,而不是仅仅2个。a. 如何在一个数组中表示一个d叉堆?假设数组从A[1]A[1]A[1]开始,它作为根,那么A[1]A[1]A[1]有d个孩子分别是A[2]...A[d+1]A[2]...A[d+1]A[2]...A[d+1],共d个。那么对于A[2]...A[d+1]A[2]...A[d+1]A...原创 2019-07-31 20:39:45 · 337 阅读 · 0 评论 -
算法导论 思考题4-1
4-1(递归式例子)对下列每个递归式,给出T(n)的渐进上界和渐进下界。假定 n≤2n\leq2n≤2时T(n)时常数。给出尽量紧确的界,并验证其正确性。不会主方法的先看以下这篇博客:https://blog.youkuaiyun.com/qq_40512922/article/details/96932368a. T(n)=2T(n/2)+n4T(n)=2T(n/2)+n^4T(n)=2T(n/2)+...原创 2019-07-31 14:54:44 · 2338 阅读 · 0 评论 -
主方法求解递归式
title: 主方法求解递归式date: 2019-07-22 23:49:10tags:主方法求解递归式 在分析递归的算法时,主方法可以较快的计算出算法的时间复杂度主方法可以用于满足以下形式的递归式。T(n)=aT(n/b)+f(n)T(n)=aT(n/b)+f(n)T(n)=aT(n/b)+f(n)其中a≥1和b>1a\geq1和b>1a≥1和b&...原创 2019-07-23 19:59:21 · 9978 阅读 · 2 评论 -
算法导论 思考题2-4
思考题2-4(逆序对) 假设A[1..n]A[1..n]A[1..n]是一个有nnn个不同数的数组,若i<ji<ji<j且A[i]>A[j]A[i]>A[j]A[i]>A[j],则对偶(i,j)(i,j)(i,j)称为A的一个逆序对(inversion)。a.列出数组<2,3,8,6,1>&l...原创 2019-07-30 22:36:13 · 877 阅读 · 0 评论 -
算法导论 思考题1-1
算法导论-思考题1-11-1(运行时间的比较)假设求解问题的算法需要 f(n)f(n)f(n)微秒(microseconds),对下表中每个函数f(n)f(n)f(n)和时间ttt可以确定在时间ttt内求解问题的最大规模nnn。中文版给的f(n)f(n)f(n)单位是毫秒,但看了原版,发现单位是微秒(microseconds),故下面采用微秒来计算。函数\时间1秒钟1分钟1小时...原创 2019-07-29 17:41:05 · 1685 阅读 · 2 评论