• 算法设计与分析(python版)-作业一


    参考教材:算法设计与分析(Python版)         作者:王秋芬

    1 . 容易 (4分)2 n=O(100n ^2)

    错误

    2 . 容易 (3分)10=θ(log10)

    正确

    3 . 容易 (3分)2^n=O(3 n)

    正确

    4 . 容易 (3分)logn^ 2=θ(logn+5)

    正确

    5 . 容易 (3分)针对顺序查找算法,影响它时间复杂度的因素只有算法的输入序列()

    错误

    因素有:输入序列、问题规模

    6 . 容易 (3分)n!的时间复杂度为O(n)

    正确

    7 . 容易 (3分)递归是指自己间接或直接调用自身

    正确

    8 . 普通 (3分)算法的基本特征有()

    A. 输入

    B. 输出

    C. 有限性

    D. 确定性

    E. 可行性

    9 . 普通 (3分)渐进复杂性的含义是()情况下的复杂性。

    A. 在最佳输入情况下

    B. 问题规模趋向于无穷

    C. 在最坏输入情况下

    D. 平均各种输入之后

    10 . 普通 (3分)n个连续自然数a1...an连加和问题算法(利用等差数列求和公式)的输入可以是什么()。

    A. a1,n

    B. an,n

    C. a1,an

    D. a1,an,n

    11 . 普通 (3分)平均时间复杂度是指()

    A. 各种情况时间复杂度按概率的加权平均

    B. 最好情况和最坏情况的时间复杂度的算术平均

    C. 各种情况时间复杂度按概率的算术平均

    D. 出现可能性最高的情况下的时间复杂度

    平均时间复杂度是指各种情况时间复杂度按概率的加权平均

    12 . 容易 (3分)算法的常见描述方式不包括()

    A. 代码

    B. 甘特图

    C. 伪代码

    D. 流程图

    13 . 容易 (3分)算法的基本特性不包括()

    A. 先进性

    B. 有穷性

    C. 有输入输出

    D. 无二义性

    算法的特性包括有输入输出,确定性(无二义性),有限性(有穷性),可行性(能行性)。

    14 . 普通 (3分)阶乘问题求n!算法的时间复杂度为()。

    A. n

    B. n!

    C. 2n

    D. n^2

    15 . 容易 (3分)二分搜索(二分查找)算法的时间复杂度是()。

    A. n

    B. logn

    C. n^2

    D. 2n

    16 . 普通 (3分)汉诺塔问题的时间复杂度是()。

    A. n!

    B. 2^n

    C. 2n

    D. logn

    17 . 容易 (3分)下述描述算法的方式采用的是算法的哪种描述方式()? 算法:gcd(m,n) 输入:非负整数m,n,其中m,n不全为0 输出:m与n的最大公约数 1.while m>0 do 2. r←n mod m 3. n ←m 4. m ←r 5.return n

    A. 自然语言

    B. 程序流程图

    C. 伪码

    D. 程序设计语言

    18 . 普通 (3分)背包问题的算法设计策略是()

    A. 重量小的优先装

    B. 价值大的优先装

    C. 单位重量价值大的优先装

    D. 以上都不对

    19 . 容易 (3分)调度问题的算法设计策略是()

    A. 加工时间短的优先安排

    B. 加工时间长的优先安排

    C. 等待时间短的优先安排

    D. 以上都不对

    20 . 普通 (3分)n个元素的冒泡排序代码如下:

    def bubble_sort(arr):
    
      for i in range(len(arr) - 1):
    
      for j in range(len(arr) - i - 1):
    
      if arr[j] > arr[j + 1]:
    
      arr[j], arr[j + 1] = arr[j + 1], arr[j]
    
    return arr
    

    请分析算法的时间复杂度,用O表示()

    A. O(1)

    B. O(n)

    C. 

    D. O(nlogn)

    n-1次冒泡 第一次比较n-1次 第二次比较n-2次 ......... 最后一次比较1次 共1+2+3+......+(n-1)

    学生答案

    21 . 普通 (3分)百元买白鸡问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?设计一算法,则该算法的输入是()

    A. 100元

    B. 100只鸡

    C. 各种鸡的单价

    D. 无需任何输入

    22 . 普通 (3分)下面算法最好情况下的时间复杂度___,最坏情况下的时间复杂度为___

    def bubble_sort(nums):        

    for i in range(len(nums) - 1):

                swap_flag = False  #改进后的冒泡,设置一个交换标志位

                for j in range(len(nums) - i - 1):

                    if nums[j]>nums[j+1]:

                        nums[j],nums[j+1]=nums[j+1],nums[j]

                        swap_flag = True

                if not swap_flag:

                    return nums  #若没有元素交换,则表示已经有序        

    return nums

    O(n)、O(n^2)

    23 . 普通 (3分)以下递归程序fun(5,0)输出的第一个元素是___,求解过程中最大层次为___

    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、4

    24 . 普通 (3分)斐波那契数列的第1项为1,第2项为2,以后每一项等于前面两项之和,则第6项为___

    13

    25 . 普通 (3分)冒泡排序时间复杂度是___,堆排序时间复杂度是___。

    O(n^2) 、nlogn

    26 . 容易 (3分)递归算法必须具备的两个条件是___和___

    边界条件或停止条件、递推方程或递归方程

    27 . 普通 (3分)用O表示21+1/n的阶(O(1))

    O(1)

    28 . 普通 (3分)用O表示10log3 n的阶()

    O(n)

    29 . 普通 (3分)用O表示logn 3的阶()

    O(logn)

    30 . 容易 (3分)用O表示

    的阶___

    O(2^n)

    31 . 容易 (3分)用O表示3n2+10n的阶___

    O(n^2)

    32 . 普通 (3分)请分析选择排序算法的时间复杂度,用O表示为:___

    def selection_sort(arr):

        # 第一层for表示循环选择的遍数

        for i in range(len(arr) - 1):

              # 将起始元素设为最小元素

            min_index = i

              # 第二层for表示最小元素和后面的元素逐个比较

            for j in range(i + 1, len(arr)):

                  if arr[j] < arr[min_index]:

                     # 如果当前元素比最小元素小,则把当前元素角标记为最小元素角标

                    min_index = j

             # 查找一遍后将最小元素与起始元素互换

            arr[min_index] , arr[i] = arr[i] , arr[min_index]

        return arr

    O(n^2)

    33 . 普通 (3分)请分析下面算法的时间复杂度:

    def bubble_sort(nums):

            for i in range(len(nums) - 1):

                swap_flag = False

      #改进后的冒泡,设置一个交换标志位

                for j in range(len(nums) - i - 1):

                    if nums[j]>nums[j+1]:

                        nums[j],nums[j+1]=nums[j+1],nums[j]

                        swap_flag = True

                if not swap_flag:

                    return nums

      #若没有元素交换,则表示已经有序

            return nums

    最好情况下,比较n-1次,时间复杂度为O(n) 最坏情况下,比较n(n-1)/2次,时间复杂度为O(n^2)

  • 相关阅读:
    C和指针 第13章 高级指针话题 13.3 函数指针
    B. Snow Walking Robot
    华火电燃灶:重拾烹饪艺术的黄金法则,打造家庭美食的温馨记忆
    第3章业务功能开发(线索关联市场活动,插入数据并查询)
    js实现整数和小数分开并添加不同的样式
    初识面向对象上
    Ceph RBD 的实现原理与常规操作
    qt中弱属性机制
    BUU [CISCN2019 华东南赛区]Web4
    Rdt2.1 和 Rdt2.2的详细解释
  • 原文地址:https://blog.csdn.net/qq_61727355/article/details/126842641