• 数据结构 习题1


    判断题

    1-1 数据结构包括数据的逻辑结构、存储结构和运算集合这三部分。

            正确

    1-2 算法的五大特性为:有限性、确定性、输入、输出、可行性。

            正确

    1-3 数据的基本逻辑结构为集合结构、线性结构、树形结构、图状结构

            正确

    单选题

    2-1 数据结构可以从逻辑上分成 (C) 两大类。

    A.动态结构和静态结构

    B.紧凑结构和非紧凑结构

    C.线性结构和非线性结构

    D.内部结构和外部结构

    2.2 数据逻辑结构可以分为( B )。

    A.线性结构和图结构

    B.集合结构、线性结构、树结构和图结构

    C.顺序结构和链式结构

    D.集合结构和非线性结构

    2-3 算法分析的两个主要方面是( A )。

    A.空间复杂度和时间复杂度

    B.正确性和简明性

    C.可读性和文档性

    D.数据复杂性和程序复杂性

    2-4  算法设计的要求

    设计一个好的算法应该满足正确性、(B)、健壮性和高效性等要求。

    A.稳定性        B.可读性        C.可靠性        D.可行性

    2-5  算法的特性

    一个算法必须满足有穷性、确定性、 ( C )  、输入和输出等五个重要特性。

    A.高效性        B.稳定性        C.可行性        D.可读性

    2-6 执行下面程序段时,执行S语句的频度为( D )。

    1. for(int i=0;i<n;i++)
    2. for(int j=1;j<=i;j++)
    3. S;

    A.n^2        B.n^2/2        C.n(n+1)        D.n(n+1)/2

    2-7 下列程序段的时间复杂度为( B )。

    1. x = n; /*n > 1*/
    2. y = 0;
    3. while(x >= (y + 1) * (y + 1))
    4. y = y + 1;

    A.Θ(n)        B.Θ(n½)        C.Θ(1)        D.Θ(n2)

    2-8  时间复杂度分析

    下面算法的时间复杂度为( D )。

    1. int foo(int n)
    2. {
    3. int i, s = 0;
    4. for (i = 1; i * i <= n; ++i)
    5. {
    6. s += i;
    7. }
    8. return s;
    9. }

    A.O(n2)        B.O(n)        C.O(n​)        D.O(log2​n)

    2-9  时间复杂度分析

    下面算法的时间复杂度为 ( D )。

    1. int foo(int n)
    2. {
    3. int i, j, s = 0;
    4. for (i = 1; i <= n; ++i)
    5. {
    6. for (j = 1; j <= i; ++j)
    7. {
    8. s += i * j;
    9. }
    10. }
    11. return s;
    12. }

    A.O(n倍根号n)        B.O(n)        C.O(nlog2​n)        D.O(n^2)

    2-10 时间复杂度分析 下面算法的时间复杂度为( B )。

    1. int foo(int n)
    2. {
    3. int i, m = n / 2, s = 0;
    4. for (i = 1; i <= m; ++i)
    5. {
    6. s += i;
    7. }
    8. return s;
    9. }

    A.O(log2​n)        B.O(n)        C.O(根号n​)        D.O(n^2)

    2-11 时间复杂度分析

    下面算法的时间复杂度为 ( A )。

    1. int foo(int n)
    2. {
    3. int i, s = 0;
    4. for (i = 1; i <= n; ++i)
    5. {
    6. s += i;
    7. }
    8. return s;
    9. }

    A.O(n)        B.O(根号n​)        C.O(log2​n)        D.O(n^2)

    2-12 时间复杂度分析

    下面算法的时间复杂度为 ( D )。

    1. int foo(int n)
    2. {
    3. return n * (n + 1) / 2;
    4. }

    A.O(n)        B.O(n2)        C.O(根号n​)        D.O(1)

    2-13 设n为正整数,请估算下列程序段的时间复杂度为( C )

    1. i=1; k=0;
    2. while(i<=n-1)
    3. { k=k+10*i;
    4. i++;
    5. }

    A.O(1)        B.O(logn)        C.O(n)        D.O(n3)

    2-14 设n为正整数,请估算下列程序段的时间复杂度为( B )

    1. i=1; j=0;
    2. while(i+j<=n)
    3. { if(i>j) j++
    4. else i++;
    5. }

    A.O(1)        B.O(n)        C.O(n^2)        D.O(n3)

    2-15 设n为正整数,请估算下列程序段的时间复杂度为( D )

    1. x=n; y=0; /* n>1 */
    2. while(x>=(y+1)*(y+1))
    3. y++;

    A.O(1)        B.O(n)        C.O(logn)        D.O(根号n​)

    2-16 设n为正整数,请估算下列程序段的时间复杂度为( A )

    1. x=91; y=100;
    2. while(y>0)
    3. { if(x>100)
    4. { x=x-10;
    5. y--;
    6. }
    7. else x++;
    8. }

    A.O(1)        B.O(n)        C.O(logn)        D.O(n2)

    执行次数为常数项,时间复杂度用O(1)表示

    三、函数题

    1. 数组中按值找元素

    在数组A[1..N]中查找值为k的元素,若找到输出其位置i(1<=i<=n),否则输出0作为标志。

    函数接口定义:

    Search(int a[],int n,int k);

    其中 a 、 nk 都是用户传入的参数。a 为数组名,期中存了n个整数,下标为1到nk 为待查数据元素;若找到了,返回其下标;否则,返回0。

    1. #include
    2. int Search(int a[50],int n,int k)
    3. {
    4. int i;
    5. for(i=1;i<=n;i++)
    6. {
    7. if(a[i]==k)
    8. {
    9. return i;
    10. }
    11. }
    12. return 0;
    13. }

    2.找最大值和次大值

    找出数组A[1..N]中最大值和次大值。(数组中元素个数大于两个且值各不相同)

    函数接口定义:

    void FindMax(int a[],int n,int *pmax1,int *pmax2);

    其中 a 和 n 是用户传入的参数。 a为数组名, n为数组中元素的个数,在下标从1到n处存放。利用指针变量 pmax1pmax2带出运算结果。 pmax1为指向最大值的指针;pmax2为指向次大值的指针。

    1. void FindMax(int a[],int n,int *pmax1,int *pmax2){
    2. for(int i = 1;i
    3. for(int j = i+1;j<=n;j++){
    4. if(a[i]
    5. int t = a[i];
    6. a[i] = a[j];
    7. a[j] = t;
    8. }
    9. }
    10. }
    11. *pmax1 = a[1];
    12. *pmax2 = a[2];
    13. }

    在数组中有序排序从大到小,存储在数组中,则数组中第一个元素为最大值,第二个元素为最小值

  • 相关阅读:
    经典背包系列问题
    Windows下启动freeRDP并自适应远端桌面大小
    在reactNative中使用mobx
    文件拷贝【 使用字节流完成文件的复制(支持一切文件类型的复制)】
    排错 rpmbuild -ba ***.spec时出现 警告:发现已安装(但未打包的)文件/错误:警告:发现已安装(但未打包的)文件
    第23集丨人生的智慧:练就一颗从容自在的心
    2023年中国液压胀管分类、产量及市场规模分析[图]
    MySQL空间数据函数
    【JVM】Class文件的格式
    共享台球室小程序系统的数据统计与分析功能
  • 原文地址:https://blog.csdn.net/m0_73983707/article/details/134258630