算法分析基础题目

第一章-算法概述

  1. 递归算法必须具备的两个条件是边界条件或停止条件递推方程或递归方程
  2. 冒泡排序时间复杂度是___,堆排序时间复杂度是___。 O ( n 2 ) O(n^2) O(n2), O ( n l o g n ) O(nlogn) O(nlogn)
  3. 斐波那契数列的第1项为1,第2项为2,以后每一项等于前面两项之和,则第6项为13
  4. 算法分析主要是分析算法的性能,包括时间复杂度和空间复杂度
  5. 请求解递归式:n>1时,T(n)=2T(n/2)+n,否则T(n)=1,则其θ形式,T(n)=θ(nlogn)
  6. 以下递归程序fun(5,0)输出的第一个元素是1,求解过程中最大层次为4

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)

  1. img递推方程的解是 O ( n 2 ) O(n^2) O(n2)
  2. 求递推方程img得到的解是 O ( n l o g n ) O(nlogn) O(nlogn)
  3. 求递推方程img得到的解是 O ( n l o g n ) O(nlogn) O(nlogn)
  4. bubble_sort最好情况下的时间复杂度 O ( n ) O(n) O(n),最坏情况下的时间复杂度为 O ( n 2 ) O(n^2) O(n2)

第二章-分治法

  1. 有关以下代码,说法正确的是(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);

  2. 以下问题中,哪些问题的分治算法消耗的时间与输入序列无关.(BD)

    A.二分查找

    B.合并排序

    C.快速排序

    D.最小值问题

  3. 填写以下二分搜索的代码中空缺的部分。(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)
    
  4. n个元素中找第二大元素的分治算法时间复杂度的是 O ( n l o g n ) O(nlogn) O(nlogn)

  5. 根据下面斐波那契数列的递归算法,可知斐波那契数列递推方程的停止条件是n=0或n=1

def Fibonacci(int num):
  if(num == 0 || num == 1):return num
  return  Fibonacci(num-1)+Fibonacci(num - 2)
  1. 下面代码为求n!的递归算法,该代码反应的n!问题递归实现的停止条件(边界条件)为当n=1时n!=1

    def fun(n):
      if (n == 1):
        return 1
    	else :
      	return fun(n - 1) * n
    
  2. 对可排序的序列s[left:right]进行合并排序,其分治算法分解操作为mid = (left+right)//2,得到的两个子问题序列是s[left:mid],s[mid+1,right]

  3. 2k×2k的棋盘覆盖问题,用k表示问题的规模,则时间复杂度为O(4k)

  4. 线性时间选择问题寻找基准元素的方法是将n个元素按照5个元素一组进行分组,取每组的中位数,然后再取中位数的中位数作为基准

  5. 4个运动员的循环赛日程表算法安排的结果是第一天1-2,3-4,第二天1-3,2-4,第三天:1-4,2-3

第3章-回溯法

  1. 有关图的m着色问题说法正确的是(AC)

    A.该问题的解形式为(x1,x2,…,xn),xi表示第i个顶点着xi号色,其取值范围为:令S={1,2,…,m}为颜色集合,则xi∈S

    B.该问题的解空间的组织结构是排列树。

    C.该问题需要设置约束条件,不需要限界条件。

    D.该问题不需要设置约束条件,只需要限界条件。

    E.该问题既需要设置约束条件,也需要限界条件。

    1. 有关最小重量机器设计问题说法正确的是(BE)

    A.该问题的解形式为(x1,x2,…,xn),xi取值范围为:令S={1,2,…,n},则xi∈S-{x1,x2,…,xi-1}

    B.该问题的解空间的组织结构是满m叉树。

    C.该问题需要设置约束条件,不需要限界条件。

    D.该问题不需要设置约束条件,只需要限界条件。

    E.该问题既需要设置约束条件,也需要限界条件。

    1. n皇后问题的解的形式定义为(x1,x2,…,xn),其中,xi(i=1,2,…,n)的取值为1,2…,n,则它的解空间的组织结构为一棵 _ 树。如果,xi(i=1,2,…,n)的取值为{1,2,…,n}-{x1,x2,…,xi-1},则对应的解空间树是一棵_树 ,答案:满n叉树排列树

    2. 0-1背包问题的解的形式定义为(x1,x2,…,xn),其中,xi(i=1,2,…,n)的取值为0或1,则它的解空间的组织结构为一棵 ___。答案:子集树

    3. 最大团问题的解的形式定义为(x1,x2,…,xn),其中,xi(i=1,2,…,n)的取值为0或1,则它的解空间的组织结构为一棵 ___。答案:子集树

    4. 旅行售货员问题的解的形式定义为(x1,x2,…,xn),其中,xi(i=1,2,…,n)的取值{1,2,…,n}-{x1,x2,…,xi-1},则它的解空间的组织结构为一棵 ___。答案:排列树

    5. 图的m着色问题的解的形式定义为(x1,x2,…,xn),其中,xi(i=1,2,…,n)的取值为1,2…,m,则它的解空间的组织结构为一棵 ___ 树。答案:满m叉树

    6. 最小重量机器设计问题的解的形式定义为(x1,x2,…,xn),其中,xi(i=1,2,…,n)的取值为1,2…,m,则它的解空间的组织结构为一棵树,深度是___(默认根结点深度为0)。答案:满m叉树

    7. 回溯法采用的搜索方式是___。答案:深度优先

    8. 回溯法是一种能进则 __,进不了则___,换不了则___的搜索算法。答案:进、换、退或回

第4章-动态规划

  1. 有关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)

  2. 有关最优二叉搜索树说法正确的是(ABD)

    A.优二叉搜索树的左孩子的节点都比根节点小,右孩子节点都比根节点大。

    B.最优二叉搜索树的平均比较次数最少。

    C.最优二叉搜索树的平均比较次数最多。

    D.最优二叉搜索树中有n个是节点,n+1个虚节点。

  3. {s1,s2,…,sn},虚节点{e0,e1,…,en}的最优二叉搜索树问题的子问题描述为有序序列{si,si+1,…,sj},虚节点{ei-1,ei,…,ej}的最优二叉搜索树,以下描述正确的是(ABC)。

    A.i=1,j=n表示规模为n的原问题。

    B.i=j+1,表示字符序列为空,对应的最优二叉搜索树为一棵空树。

    C.有序序列{si,si+1,…,sj},虚节点{ei-1,ei,…,ej}的最优二叉搜索树的子问题是:有序序列{si,si+1,…,sk-1},虚节点{ei-1,ei,…,ek-1}的最优二叉搜索树和有序序列{sk+1,sk+2,…,sj},虚节点{ek,ek+1,…,ej}的最优二叉搜索树。

    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

  4. 有关最长公共子序列问题的动态规划算法说法正确的是(AB)

    A.X n和Y m的代表了两个长度为n和m的字符串,求X n和Y m的最长公共子序列的子问题是:求X i和Y j的最长公共子序列,i=0,1,…n,j=0,1,…,m。

    B.X i和Y j的最长公共子序列当i=0时,最长公共子序列的长度为0;j=0时,最长公共子序列的长度也为0。

    C.设X i和Y j的最长公共子序列的长度c[i][j],求最优值的递归关系式为:c[i][j]=c[i-1][j]。

    D.设X i和Y j的最长公共子序列的长度c[i][j],求最优值的递归关系式为:c[i][j]=c[i-1][j]+1。

  5. 矩阵连乘问题中有多个矩阵相乘,问题是安排矩阵相乘的先后顺序,使总乘法次数最少,例如 有[A][B]C三个矩阵,则可行的顺序有ABC\ACB\CAB\CBA\BAC\BCA六个。 答案:否

  6. 以动态规划求解0-1背包问题,背包容量可以是任意实数。 答案:否

  7. 最长公共子序列问题中,如果采取穷举法,可以在序列A中子序列可能的开头和结尾(因为子序列由其开头位置和结尾位置唯一确定),然后在序列B中查找它是否存在,如果按照子序列长度降序枚举,找到的第一个公共子序列就是最长公共子序列。答案:否

  8. 0-1背包问题的动态规划解法不适合背包容量非常大(img)的情况。答案:是

  9. 最长公共子序列问题的动态规划解法时间复杂度等于两个序列长度之积。答案:是

    1. 0-1背包问题的贪心法解法和动态规划解法都能够生成最优解。答案:否

第5章-贪心算法

  1. 贪心算法的贪心策略确定后可以更改() 答案:否
  2. 针对同一个问题,贪心策略可能有多个,贪心算法的好坏取决于贪心策略的好坏。 答案:是
  3. 一个好的贪心策略,肯定能得到问题的最优解。答案:否
  4. 贪心法具有高效性,它可以非常迅速地获得一个解。答案:是
  5. 找零钱问题一定能使得找出去的钱币数最少。答案:否
  6. 最优装载问题的贪心策略一定能使得装上船的集装箱个数最多。 答案:是
  7. 调度问题的贪心策略不一定能使得n个任务的总等待时间(总完成时间和)最短。 答案:否
  8. 会场安排的最佳贪心策略一定能保证安排最多的相容会议使用同一会议室。答案:是
  9. 物品可以切割的背包问题的最佳贪心策略不一定能保证装入背包的物品总价值最大。答案:否
  10. 堆排序、冒泡排序、快速排序都采用了贪心策略进行排序,答案:否

第6章-分支限界法

  1. 部落卫队问题。原始部落byteland中的居民们为了争夺有限的资源,经常发生冲突。几乎每个居民都有他的仇敌。部落酋长为了组织一支保卫部落的队伍,希望从部落的居民中选出最多的居民入伍,并保证队伍中任何2 个人都不是仇敌。给定byteland部落中居民间的仇敌关系,编程计算组成部落卫队的最佳方案。以下有关部落卫队问题说法正确的是(ACDE)

    A.该问题的解的形式为(x1,x2,…,x3),xi(i-1,2,3,…,n)=0或1,0表示居民未被选入部落卫队,1表示居民被选入部落卫队。

    B.该问题的解空间组织结构为一棵排列树,规模为n时,树的深度为n。

    C.该问题可以用分支限界法求解,也可以用回溯法求解。

    D.该问题需要设置约束条件,也需要设置限界条件。

    E.将给定的仇敌关系图转换成它的补图,则成为友好关系图,部落卫队问题实质就是最大团问题。

  2. 分支限界法和回溯法都是搜索法,但它们的搜索方式是不同的,分支限界法是以深度优先搜索的方式进行搜索,而回溯法是以广度优先的方式进行搜索,答案:否

  3. 分支限界法是一种“能进则进、进不了则换、换不了则退(回溯)”的搜索方法。答案:否

  4. 分支限界法有两种类型:队列式分支限界法和优先队列式分支限界法 答案:是

  5. 分支限界法的扩展方式为一次生成所有的孩子节点 答案:是

  6. 分支限界法搜索过程中保留下来的结点即为活结点,是符合约束条件的可能导致最优解的结点 答案:否

  7. 分支限界法搜索过程中,舍弃的是导致不可行解的结点和导致非最优解的结点 答案:是

  8. 分支限界法的求解目标则是找出满足条件的一个解。回溯法的求解目标是找出解空间树中满足条件的所有解。 答案:是

  9. 0-1背包问题可以用队列式分支限界法,也可以用优先队列式分支限界法求解。 答案:是

  10. 优先队列式分支限界法搜索过程中使用的活结点表可以用堆或优先队列等数据结构实现。 答案:是

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python数据分析基础试题主要涉及以下几个方面: 1. 数据导入与读取:使用Python的pandas库可以方便地导入和读取各种数据格式,如CSV、Excel、JSON等。可以使用pandas的read_csv()、read_excel()等函数进行读取操作。 2. 数据预处理:数据预处理是数据分析的重要步骤之一。可以使用pandas库对数据进行清洗、转换和处理。常见的数据预处理操作包括去除缺失值、删除重复值、数据变换、数据合并等。 3. 数据分析与可视化:通过pandas库的数据分析功能和matplotlib库的可视化功能,可以对数据进行统计分析和可视化展示。常见的数据分析方法包括描述性统计分析、数据筛选和排序、分组与聚合等。而可视化可以使用matplotlib库绘制各种图表,如折线图、柱状图、散点图、饼图等,以便更直观地展示数据。 4. 数据建模与预测:在数据分析中,常常需要利用机器学习算法进行数据建模与预测。可以使用Python的scikit-learn库进行常见的机器学习任务,如回归分析、分类分析、聚类分析等。通过训练模型,可以对未知数据进行预测和分类。 总之,Python数据分析基础主要涉及数据导入与读取、数据预处理、数据分析与可视化以及数据建模与预测等方面的知识。熟练掌握这些基础知识,可以帮助我们更好地进行数据分析工作。在实际应用中,还需要不断学习和实践,才能提高自己的数据分析能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重生之我是cxk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值