算法分析基础题目
第一章-算法概述
- 递归算法必须具备的两个条件是
<u>
边界条件或停止条件</u>
和<u>
递推方程或递归方程</u>
- 冒泡排序时间复杂度是___,堆排序时间复杂度是___。 ,
- 斐波那契数列的第1项为1,第2项为2,以后每一项等于前面两项之和,则第6项为
<u>
13</u>
- 算法分析主要是分析算法的性能,包括时间复杂度和
<u>
空间复杂度</u>
- 请求解递归式:n>1时,T(n)=2T(n/2)+n,否则T(n)=1,则其θ形式,T(n)=
<u>
θ(nlogn)</u>
- 以下递归程序fun(5,0)输出的第一个元素是
<u>
1</u>
,求解过程中最大层次为<u>
4</u>
def fun(i,d):
if(i>1 and i%2!=0): fun(i-i//2,d+1)
if(i>1): fun(i//2,d+1)
- 求递推方程的解是
- 求递推方程得到的解是
- 求递推方程得到的解是
- bubble_sort最好情况下的时间复杂度,最坏情况下的时间复杂度为
第二章-分治法
-
有关以下代码,说法正确的是(ABCE)
def BinarySearch(s, x, low, high):
if (low > high):
return -1
middle = (low + high) / 2
if (x == s[middle]):
return middle
elif(x > s[middle]):
return BinarySearch(s, x, middle + 1, high)
else :
return BinarySearch(s, x, low, middle - 1)A.BinarySearch的功能是针对有序序列s[] ,采用二分搜索技术查找指定元素x.
B.if (low>high) return -1;该语句为递归的边界条件。
C.将问题规模一份为二的语句是middle=(low+high)/2;
D.递归序列左半部分的语句是BinarySearch (s, x, middle+1, high);
E.递归序列左半部分的语句是BinarySearch (s, x, low, middle-1);
-
以下问题中,哪些问题的分治算法消耗的时间与输入序列无关.(BD)
A.二分查找
B.合并排序
C.快速排序
D.最小值问题
-
填写以下二分搜索的代码中空缺的部分。(low+high)/2
def BinarySearch(s, x, low, high):
if (low > high):
return -1
middle = ___; //分解
if (x == s[middle]):
return middle
elif(x > s[middle]):
return BinarySearch(s, x, middle + 1, high)
else :
return BinarySearch(s, x, low, middle - 1) -
n个元素中找第二大元素的分治算法时间复杂度的是
-
根据下面斐波那契数列的递归算法,可知斐波那契数列递推方程的停止条件是
<u>
n=0或n=1</u>
。
def Fibonacci(int num):
if(num == 0 || num == 1):return num
return Fibonacci(num-1)+Fibonacci(num - 2)
-
下面代码为求n!的递归算法,该代码反应的n!问题递归实现的停止条件(边界条件)为
<u>
当n=1时n!=1</u>
。def fun(n):
if (n == 1):
return 1
else :
return fun(n - 1) * n -
对可排序的序列s[left:right]进行合并排序,其分治算法分解操作为mid = (left+right)//2,得到的两个子问题序列是
<u>
s[left:mid],s[mid+1,right]</u>
-
2k×2k的棋盘覆盖问题,用k表示问题的规模,则时间复杂度为
<u>
O(4k)</u>
。 -
线性时间选择问题寻找基准元素的方法是
<u>
将n个元素按照5个元素一组进行分组,取每组的中位数,然后再取中位数的中位数作为基准</u>
-
4个运动员的循环赛日程表算法安排的结果是
<u>
第一天1-2,3-4,第二天1-3,2-4,第三天:1-4,2-3</u>
第3章-回溯法
-
有关图的m着色问题说法正确的是(AC)
A.该问题的解形式为(x1,x2,…,xn),xi表示第i个顶点着xi号色,其取值范围为:令为颜色集合,则xi∈S
B.该问题的解空间的组织结构是排列树。
C.该问题需要设置约束条件,不需要限界条件。
D.该问题不需要设置约束条件,只需要限界条件。
E.该问题既需要设置约束条件,也需要限界条件。
- 有关最小重量机器设计问题说法正确的是(BE)
A.该问题的解形式为(x1,x2,…,xn),xi取值范围为:令,则
B.该问题的解空间的组织结构是满m叉树。
C.该问题需要设置约束条件,不需要限界条件。
D.该问题不需要设置约束条件,只需要限界条件。
E.该问题既需要设置约束条件,也需要限界条件。
-
n皇后问题的解的形式定义为(x1,x2,...,xn),其中,xi(i=1,2,...,n)的取值为1,2....,n,则它的解空间的组织结构为一棵 _ 树。如果,,则对应的解空间树是一棵_树 ,答案:
<u>
满n叉树</u>
、<u>
排列树</u>
-
0-1背包问题的解的形式定义为(x1,x2,...,xn),其中,xi(i=1,2,...,n)的取值为0或1,则它的解空间的组织结构为一棵 ___。答案:子集树
-
最大团问题的解的形式定义为(x1,x2,...,xn),其中,xi(i=1,2,...,n)的取值为0或1,则它的解空间的组织结构为一棵 ___。答案:子集树
-
旅行售货员问题的解的形式定义为(x1,x2,...,xn),其中,xi(i=1,2,...,n)的取值,则它的解空间的组织结构为一棵 ___。答案:排列树
-
图的m着色问题的解的形式定义为(x1,x2,...,xn),其中,xi(i=1,2,...,n)的取值为1,2....,m,则它的解空间的组织结构为一棵 ___ 树。答案:满m叉树
-
最小重量机器设计问题的解的形式定义为(x1,x2,...,xn),其中,xi(i=1,2,...,n)的取值为1,2....,m,则它的解空间的组织结构为一棵树,深度是___(默认根结点深度为0)。答案:满m叉树
-
回溯法采用的搜索方式是___。答案:深度优先
-
回溯法是一种能进则 __,进不了则___,换不了则___的搜索算法。答案:进、换、退或回
第4章-动态规划
-
有关0-1背包问题,用c[i][j]描述子问题:1...i共i个物品,背包容量为j的最优值(装入背包的最大价值),则其子问题为:1...i-1共i-1个物品,背包容量为j-w ix i,以下说法正确的是(ABD)
A.当i=0时或j=0时,c[i][j]=0。
B.当
j<w i
时,物品无法装入,其x i=0,则背包容量依旧为j,c]i][j]=c[i-1][j].C.当
j≥w i
时,物品可以装入,装呢还是不装呢?这取决于哪个决策能够让c[i][j]最小。故c]i][j]=min(c[i-1][j],c[i-1][j-w i]+v i)D.当
j≥w i
时,物品可以装入,装呢还是不装呢?这取决于哪个决策能够让c[i][j]最大。故c]i][j]=max(c[i-1][j],c[i-1][j-w i]+v i) -
有关最优二叉搜索树说法正确的是(ABD)
A.优二叉搜索树的左孩子的节点都比根节点小,右孩子节点都比根节点大。
B.最优二叉搜索树的平均比较次数最少。
C.最优二叉搜索树的平均比较次数最多。
D.最优二叉搜索树中有n个是节点,n+1个虚节点。
-
,虚节点的最优二叉搜索树问题的子问题描述为有序序列,虚节点的最优二叉搜索树,以下描述正确的是(ABC)。
A.i=1,j=n表示规模为n的原问题。
B.i=j+1,表示字符序列为空,对应的最优二叉搜索树为一棵空树。
C.有序序列,虚节点的最优二叉搜索树的子问题是:有序序列,虚节点的最优二叉搜索树和有序序列,虚节点的最优二叉搜索树。
D.子问题的最优值:最小平均比较次数c[i][j],左子树的最优值:最小平均比较次数c[i][k-1],右子树的最优值:最小平均比较次数c[k+1][j],三者之间的关系为:c[i][j]=c[i][k-1]+c[k+1][j]+pi+...+pj+qi-1+...+qj