《数据结构》(绪论)课后习题笔记✍

本文深入解析了算法的时间复杂度,包括常数级O(1)、对数级O(log n)、线性级O(n)和平方级O(n^2)等不同复杂度级别的含义与计算方法。通过具体实例,如while循环、嵌套循环等,阐述了如何评估算法效率。

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

5(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的 逻辑结构 ;

  (4)数据元素是数据的基本单位;数据项是数据的最小单位;数据结构是带有结构的各数据元素的集合。

  (5)算法的时间复杂度取决于 问题的规模 和 待处理数据的初态;

6 试分析下列各算法的时间复杂度

  (1)

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

我的答案:O(y);
正确答案:O(1);
ps:因为y的大小已经确定,所以y是常量。

 (4)

i=1;
while(i<=n)      //(1)
    i=i*3;

我的答案:O(n);
正确答案:O(log(3)n);
ps:原意是忽视了i=i*3; 设(1)式的计算次数为x,可得i*3^x<=n, 即得其语句频度x为log(3)n/i,所以得
    O(log(3)n); 

 (5)

x=0;
for(i=1; i<n; i++)
  for(j=1; j<n-1; j++)
      x++;

我的答案:O(n)
正确答案:O(n^2)
ps:x++;的执行次数为(n-1)+(n-2)+(n-3)+...+2+1=n(n-1)/2,所以得O(n^2);

(6)

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

我的答案:O(log(y+1)2)
正确答案:O(√n)
ps:x等于n值,所以n的值大于等于(y+1)^2的时候,while语句执行的次数就是y的取值(因为y的初值为0);所以解方程 n=(y+1)^2,得y=√n+1,所以得O(√n)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值