admin 管理员组

文章数量: 887021

算法

目录

一.单选题

二.多选题

补充的题

 知识点


一.单选题

1

【单选题】n个元素最小值问题的分治算法分解方法错误的是()。

  • A、

    划分为2个规模大致相等的子问题

  • B、

    从中间将n个元素划分为两部分

  • C、

    n个元素的位置下界left、上界right,分解操作为(left+right)/2

  • D、

    将n个元素分解为多个子问题,子问题之间不独立

正确答案: D 

2

【单选题】有关2个n位大整数乘法问题说法错误的是()。

  • A、

    将两个n位大整数分解为4个规模大致相等的n/2位整数的整数乘法问题。

  • B、

    递归解决4个子问题。

  • C、

    子问题的解需要归并成原问题的解。

  • D、

    子问题的解本身就是原问题的解。

正确答案: D 

【单选题】有关快速排序的分治算法描述错误的是()。

  • A、

    快速排序A[left,right],选取基准元素的方法,将待排序元素分解为两个子问题。

  • B、

    快速排序基准元素的选取可以是待排序元素中的任何一个元素。

  • C、

    快速排序划分的两个子问题规模大致相等。

  • D、

    快速排序A[left,right],递归算法的边界条件是left<right

正确答案: C 

4

【单选题】下述关于二分查找(折半查找)算法描述错误的是( )

  • A、

    二分查找是在任意给定的n个元素序列中查找指定元素。

  • B、

    二分查找的序列为A[left,right],分解操作为:(right-left)/2

  • C、

    二分查找根据比较的结果,好的情况是相等,算法结束。坏的情况是进入其中一个子问题继续查找。

  • D、

    若二分查找的序列为A[left,right],用递归来解决子问题,则边界条件是left>right。

正C

5

【单选题】根据下面斐波那契数列的递归算法,可知斐波那契数列的第n项的递归式为()。
def Fibonacci(int num):
if(num == 0 || num == 1):
return num
return Fibonacci(num-1)+Fibonacci(num - 2)

  • A、

    Fibonacci(n)=0 当n=0时

  • B、

    Fibonacci(n)=1 当n=1时

  • C、

    Fibonacci(n)=Fibonacci(n-1)+Fibonacci(n-2) 当n〉1时

  • D、

    Fibonacci(n)=Fibonacci(n-2)+Fibonacci(n-3) 当n〉1时

正确答案: C 

6

【单选题】棋盘覆盖问题的分解方法为()。

  • A、

    将2^k*2^k的棋盘分解为2个2^(k-1)*2^k

  • B、

    将2^k*2^k的棋盘分解为2个2^k*2^(k-1)

  • C、

    将2^k*2^k的棋盘分解为4个2^(k-1)*2^(k-1)

  • D、

    以上分解的方法都不对

正确答案: C

7

【单选题】关于快速排序分治算法时间复杂度描述错误的是()

  • A、

    快速排序分治算法最好情况下的时间复杂度为O(nlogn).

  • B、

    快速排序分治算法最坏情况下的时间复杂度为O(n 2).

  • C、

    快速排序分治算法平均情况下的时间复杂度为O(n 2).

  • D、

    快速排序分治算法平均情况下的时间复杂度为O(nlogn).

正确答案: C 

【单选题】二分合并排序算法时间复杂度的是()

  • A、

    O(logn)

  • B、

    O(nlogn)

  • C、

    0(logn^2)

  • D、

    0(n^2)

正确答案: B 

9

【单选题】分治算法核心就是分而治之,其中的“治”描述错误的是( )。

  • A、

    分治法通过治理小问题来治理大问题。

  • B、

    分治法递归治理小问题。

  • C、

    分治法需要将子问题的解归并成大问题的解。

  • D、

    治理子问题时,会有重复性治理子问题的现象。

正确答案: D 

10

【单选题】
以下代码功能为合并排序,请根据注释按照数顺序选择合适的语句填入对应的括号。
{def MergeSort(A, low, high):
if (low < high):
()#分解
()# 递归序列左半部分
()# 递归序列右半部分
Merge(A, low, middle, high)# 子问题的解合并成原问题的解}

  • A、middle=(high-low)/2;MergeSort(A,low,middle);MergeSort(A,middle+1,high);
  • B、middle=(low+high)/2;MergeSort(A,low,middle);MergeSort(A,middle+1,high);
  • C、middle=(low+high)/2;MergeSort(A,middle+1,high); MergeSort(A,low,middle);
  • D、middle=(high-low)/2;MergeSort(A,middle+1,high); MergeSort(A,low,middle);

正确答案: B 

答案解析:

11

【单选题】大整数A和B的乘法,将A分成位数大致相等的两部分A1和A2 ,将B分成位数大致相等的两部分B1和B2,以下描述错误的是()。

  • A、

    4个子问题的解归并为原问题解的方法为:A×B=10nA1B1+10n/2(A1B2+A2B1)+A2B2

  • B、

    3个子问题的解归并为原问题解的方法为:A×B=10nA1B1+10n/2((A1-A2)(B2-B1)+A1B1+A2B2)+A2B2

  • C、

    3个子问题的解归并为原问题解的方法为:A×B=10nA1B1+10n/2((A1+A2)(B1+B2)-A1B1-A2B2)+A2B2

  • D、

    划分3个子问题比划分4个子问题时间复杂度低

正确答案: C 

【单选题】分治算法的基本思想描述错误的是( )

  • A、分治法将规模大的问题分解成规模较小的问题解决。
  • B、分治法划分的小问题相互重叠。
  • C、分治法一般采用递归的方法解决子问题。
  • D、分治法划分的小问题规模小到一定程度时可以直接解决。

正确答案: B 

答案解析:

二.多选题(共3题,20.8分)

1

【多选题】分治算法的思想是()

  • A、

    将规模较大的问题划分为规模较小的相同子问题。

  • B、

    子问题之间相互独立。

  • C、

    子问题之间不相互独立。

  • D、

    递归解决划分得到的子问题

  • E、

    有些子问题的解需要归并得到原问题的解

正确答案: ABDE 

2

【多选题】分治算法的步骤有()

  • A、

    分解。

  • B、

    治理。

  • C、

    递归。

  • D、

    贪心。

正确答案: AB 

3

【多选题】n个元素最小值问题的分治算法分解方法为()

  • A、

    划分为2个规模大致相等的子问题

  • B、

    从中间将n个元素划分为两部分

  • C、

    如果n个元素的位置下界left、上界right,那么每次分解操作为(left+right)/2

  • D、

    将n个元素分解为多个子问题,子问题之间不独立

正确答案: ABC 

补充的题

 

 

 

 

 知识点

  • 分治策略是:对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。这种算法设计策略叫做分治法。

    分治法所能解决的问题一般具有以下几个特征:

        1) 该问题的规模缩小到一定的程度就可以容易地解决

        2) 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。

        3) 利用该问题分解出的子问题的解可以合并为该问题的解;

        4) 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题。

  • 二分查找的时间复杂度为O(logn)。

    二分查找算法的算法思维:

    1.首先查找数组必须是有序的(假设为升序)。

    2.取查找数组中间的数作为基准,如果需要查找的数据大于基准说明该数存在于 数组的左边。反之存在于基准右边。

    3 假设待查找的数小于基准,那么将基准换成左子数组的中间的数,重复步骤2,直到找到该数。

本文标签: 算法