• 数据结构、算法与应用(C++描述)(第二版)第二章习题解答


    其他章节

    导航

    3 4 5 6 7 18 19 21 22 23 24 25 26 27 28 29 35 36

    3

    可能不同,也可能不同。依编译器而决定。
    

    4

    指令空间,数据空间,环境栈空间,形参变量,临时数据空间。
    

    5

    1) 3 * 8 = 24 bytes
    2) 10 * 100 * 4 = 4000 bytes
    3) 100 * 5 * 20 * 8 = 80,000 bytes
    4) 10 * 10 * 10 * 5 * 4 = 20,000 bytes
    5) 2 * 3 * 4 * 1 = 24 bytes
    6) 3 * 3 * 3 * 3 * 4 = 324 bytes
    

    6

    
    

    7

    int factorial(int n)
    {// Return n!.
       if (n <= 1)
          return 1;
       int fact = 2;
       for (int i = 3; i <= n; i++)
          fact *= i;
       return fact;
    }
    非递归版本: 0
    递归版本:8 * max{n, 1}
    总结:非递归版本使用的空间少于递归版本。
    

    18

    2次
    

    19

    n - 1次, n > 1
    0次 , n<=1
    

    21

    numberOfRows * numberOfColumns
    

    22

    n(n-1)/2
    

    23

    n*n*n
    

    24

    m*p*n
    

    25

    设s(k,n)为perm(a, k,n)调用时的交换次数, 当k = n时s(k,n) = 0 ;  当 k < n时(n - k + 1)(2 + s(k+1, n));
    通过重复替换,得到
    s(1,n) = 2n + 2n(n - 1) + 2n(n - 1)(n - 2) + ... + 2n(n - 1)(n - 2) ... 2
    = 2n! [sum from (i=1) to (n-1) (1 / (i!))]
    

    26

    2-24:
    最好:n<0,t=0
    最坏:n>1,t=3n
    2-25:
    最好:n<0,t=0
    最坏:n>1,t=2n
    

    27

    n<1,t=0
    n>1,t=n
    

    28

    最坏:n次
    2-26快
    

    29

    1)
    int stepCount;
    void d(int x[], int n)
    {
    	for (int i = 0; i < n; i += 2)
    	{
    		++stepCount; //比较
    		x[i] += 2;
    		++stepCount;//+=
    	}
    	++stepCount;//for的最后一次比较
    
    	int i = 1;
    	++stepCount;//赋值
    
    	while (i <= n / 2)
    	{
    		++stepCount;//比较
    		++stepCount;//+=
    		x[i] += x[i + 2];
    		i++;
    		++stepCount;//++
    	}
    	++stepCount;//while的最后一次比较
    }
    2)
    int stepCount;
    void d(int x[], int n)
    {
    	for (int i = 0; i < n; i += 2)
    		stepCount += 2;
    
    	stepCount += 2;
    	int i = 1;
    	while (i <= n / 2)
    	{
    		stepCount += 3;
    		++i;
    	}
    	++stepCount;//while的最后一次比较
    }
    3)
    for:2ceil(n/2)
    while:3floor(n/2)
    3 + 2ceil(n/2) + 3floor(n/2)
    4)
    ______________________________________________________________________________
    Statement                                s/e       Frequency      Total Steps
    ______________________________________________________________________________
    void d(int x[], int n)                    0                0                0
    {                                         0                0                0
       for (int i = 0; i < n; i += 2)         1    ceil(n/2) + 1    ceil(n/2) + 1
          x[i] += 2;                          1        ceil(n/2)        ceil(n/2)
       int i = 1;                             1                1                1
       while (i <= n/2)                       1   floor(n/2) + 1   floor(n/2) + 1
       {                                      0                0                0
          x[i] += x[i+1];                     1       floor(n/2)       floor(n/2)
          i++;                                1       floor(n/2)       floor(n/2)
       }                                      0                0                0
    }                                         0                0                0
    ______________________________________________________________________________
    Total                                            2ceil(n/2) + 3floor(n/2) + 3
    ______________________________________________________________________________
    

    35

    不,一个程序可以在一个输入上显示它的最坏时间行为,在另一个输入上显示它的最坏空间行为。
    例如,我们可能有两种方法来解决同一个问题。一个可能很快,但会占用很多空间,而另一个可能很慢,但空间效率高。
    我们可以将这两种方法合并到一个程序中,其中根据某些输入属性选择实际使用的解决方案方法。
    满足这个特性的输入使用最坏情况空间运行得很快;不满足此属性的输入在最坏情况下运行,但使用最小的空间。
    

    36

    1)
    t(n)=2(n+1)
    2)
    t(n)=(n+1)/2
    3)
    t(n)=n(n+1)
    4)
    t(n)=2^n
    5)
    t(n)=3^n
    

    回到导航

  • 相关阅读:
    angular 路由动态加载JS文件
    使用AngularJS处理单选框和复选框的简单方法
    angularjs 请求后端接口请求了两次
    angular ui.router 路由传参数
    linux 安装svn服务器
    gulp css 压缩 合并
    ajax 实现跨域
    [codeforces 1366D] Two Divisors
    Namomo Test Round 1 题解
    Race(淀粉质)
  • 原文地址:https://www.cnblogs.com/ysjcqs/p/DataChapter2.html
Copyright © 2020-2023  润新知