数据结构考前习题(主包含时间复杂度总结)

文章讨论了数据结构中的逻辑结构与存储结构的区别,强调逻辑结构与数据元素的形式、内容无关。同时,介绍了算法的特性,包括有穷性、确定性、可行性、输入输出,并阐述了算法评价的四个准则:正确性、可读性、健硕性和高效性。重点在于分析了不同算法的时间复杂度,通过举例展示了如何计算和评估时间复杂度,包括线性、对数、平方以及常数复杂度的案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,逻辑结构描述的是关系,与数据元素本身特点及计算机参数等没有关系。

  1. 与数据元素本身的形式,内容,大小个数等无关的是数据的(B)

A.存储结构 B.逻辑结构 C.储存实现 D.运算实现

  1. 从逻辑上可以把数据结构分成(线性结构与非线性结构)

  1. 下面那个是非线性数据结构的(A)

  1. A.树 B.字符串 C.队列 D.栈

二,算法的五个特性:

有穷,确定,可行,输入和输出.

三,算法的四个评测准则:

正确性,可读性,健硕性,高效性(用时间复杂度来判断)

二三分析:给选项形容词前添加“不”字,如果可以接受,说明是评价准则,否则是必须满足的特性。如“不健壮”或“不高效”仍然是能作为一个算法的,只是变得不够完美。但是“不可行”或“不确定”就无法容忍了,一个算法不可行或者无法给出确定的结果就不能称之为算法。

四,算法复杂度是一个保证,在给定输入规模的情况下,用O(数量级)表示。

  1. 分析下列算法(程序段)的时间复杂度:(代码理解什么是时间复杂度)

//算法输入:n和m
int ans = 0;
for(int i = 0; i < n; i+= 1)
{
        for(int j = 0; j < m; j += 1)
{
            ans += 1;
    }
}

在给定算法输入n和m的情况下,该嵌套循环内的语句将至多执行nm次,因此运行时间的上限,也及是时间复杂度是O(mn)。

  1. 分析下列算法时间复杂度:(怎么计算时间复杂度)

//算法输入:大小为n的数组nums,一个整数val
for (int i = 0; i < n; i += 1){
    if(nums[i] == val){
        return i;
    }
}

最坏的情况下,val位于nums的最后一位,循环内的if判断需要执行n次,因此时间复杂度为O(n)

,换句话说,这个算法保证在执行至多n次判断后就能结束.

  1. 分析下列算法时间复杂度:(规定执行次数怎么办?)

//算法输入:n
for (int i = 0; i < n; i += 1){
    if(i > 1000)
            break;
    ans +=i;
}

无论输入n是多少,都循环至多执行1000次,因此时间复杂度为0(1000),也即常数复杂度不管这个常数多大,我们都认为他是0(1).

  1. 分析下列算法时间复杂度:(呈对数或线性关系分析)

//算法输入:n
int ans = 0;
for (int i = 1; i <=n; i += 1){
        for (int j = 1; j < n; j*= 2){
               ans +=i;
        }
}

内层循环(j)次数和n呈对数关系 →因此内层复杂度为0(log(n)).

外层循环(i)次数和n呈线性关系 →即执行n次0(log(n))的内层循环,得到0(n*log(n)).

  1. 分析下列算法时间复杂度:(内层循环的上限在变动

//算法输入:n
int ans = 0;
for (int i = 1; i <=n; i += 1){
        for (int j = 1; j < i; j += 1){
               ans +=i;
        }
}

对i为0,1,2,......,n-1时,内层循环次数为:0,1,2,3,......,n-1求和得到的表达式中,最高阶的项是n²,因此整个表达式数量级是n²,即最终答案为O(n²)(内层循环的上限在变动)。

五.算法复杂度描述的是算法执行时间的增加和输入规模的增加呈何种关系。

  1. 在算法输入规模为n时,算法运行时间正比与9log(3的n次方),则该算法的时间复杂度为O(n).

9log(3的n次方) = 9nlog(3),对于算法的复杂度分析时,我们不关心常数和低阶项,只关心和输入规模n有关的数量级,因此0(9n*log(3)) → O(n)。

2.O(3n)是O(n)的三倍.

3.算法时间复杂度定义:

  在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n)=O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。其中f(n)是问题规模n的某个函数。

4.随着n的增加,算法执行的的语句次数将增加!!!

六.结束语

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三鄯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值