数据结构与算法/基本知识习题

第一章 基础知识

1.1 数据结构的基本概念

数据

数据元素

数据对象

数据结构

储存方法:顺序/链式/索引/散列

1.2 抽象数据类型

1.3问题、算法和程序

问题:计算机需要完成的任务

算法:对特定问题求解步骤的一种描述

          有穷性/确定性/可行性/输入和输出/通读性/可读性/健壮性

程序:一组指示计算机每一步动作的指令序列

1.4 算法分析概述

算法分析:对一个算法所需的资源(计算时间&储存空间)进行预测的过程

程序在计算机下消耗的时间取决于:

(1)算法采用的策略

(2)问题的规模

(3)编写程序所采用的计算机语言

(4)编译和运行环境

1.5 时间复杂度计算

【题1】设n为正整数,试确定程序段中前置以记号@标记的语句的频度

i=0;k=0
do{
  @ k+=1;
    i++;
}while(i<=n-1)

 这道题容易因为特别注意i=0且i<=n-1,而得出答案为n。

 但是因为先执行do内的语句,再判断,所以实际i=0且i<-n-1,所以正确答案应该为n-1

【题2】设n为正整数,试确定程序段中前置以记号@标记的语句的频度

k=0;
for(i=0;i<=n;i++){
    for(j=i;j<=n;j++)
      @ k++;
}

这里一定要注意j的取值是从i开始的。除了这一点还要注意在计算的时候不要每次都加上第一个循环,即(1+n)+(2+n-1)+...+(n+1)=(n+1)n

所以正确答案是 (n)+(n-1)+...+(1)=\frac{(n+1)n}{2}

【题3】设n为正整数,试确定程序段中前置以记号@标记的语句的频度

i=1;j=0;
while(i+j<=n){
  @ if(i>j) j++;
    else i++;
}

这里应该自己推理一下找一找规律:

n=1,2,3....

i=1,2,3....

j=1,2,3....

所以正确答案是n

 【题4】设n为正整数,试确定程序段中前置以记号@标记的语句的频度

x=91;y=100;
while(y>0){
  @ if(x>100){
        x-=10;y--;
        }
    else x++
}

k=1,...,      9, 10,  11...

x=92,...,100, 101,91...

y=100 , 100, 100,99...

依照这个规律,正确答案是11*100=1100

1.6 渐进分析

上限表示法

下线表示法

\Theta表示法

常见复杂度级别:

1<log_{b}(n)<n<nlog_{b}(n)<n^{2}<n^{3}<n^{i}<3^{n}<i^{n}<n!<n^{n}

1.7空间复杂度

O(1)

如果算法执行所需要的临时空间不随着某个变量n的大小而变化,即此算法空间复杂度为一个常量,可表示为 O(1)

O(n)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值