算法导论 — 2.2 算法分析

练习

2.2-1 Θ Θ Θ记号表示函数 n 3 / 1000 – 100 n 2 – 100 n + 3 n^3/1000 – 100n^2 – 100n + 3 n3/1000100n2100n+3
  
   Θ ( n 3 ) Θ(n^3) Θ(n3)
  
2.2-2 考虑排序存储在数组 A A A中的 n n n个数:首先找出 A A A中的最小元素并将其与 A [ 1 ] A[1] A[1]中的元素进行交换。接着,找出 A A A中的次最小元素并将其与 A [ 2 ] A[2] A[2]中的元素进行交换。对 A A A中前 n − 1 n-1 n1个元素按该方式继续。该算法称为选择算法,写出其伪代码。该算法维持的循环不变式是什么?为什么它只需要对前 n − 1 n-1 n1个元素,而不是对所有 n n n个元素运行?用 Θ Θ Θ记号给出选择排序的最好情况与最坏情况运行时间。
  
  在这里插入图片描述
  无论对于什么情况的输入,内层for循环的次数都是一样的。所以该算法没有最好情况与最坏情况之分,对所有情况的运行时间都为 Θ ( n 2 ) Θ(n^2) Θ(n2)
  
2.2-3 再次考虑线性查找问题(参见练习2.1-3)。假定要查找的元素等可能地为数组中的任意元素,平均需要检查输入序列的多少元素?最坏情况又如何呢?用 Θ Θ Θ记号给出线性查找的平均情况和最坏情况运行时间。证明你的答案。
  
  线性查找问题,最坏情况是要查找的元素位于数组的最后一个位置,或要查找的元素在数组中不存在,这种情况下算法需要比较数组中的每一个元素,因此最坏情况运行时间为 Θ ( n ) Θ(n) Θ(n)
  平均来看,算法需要比较数组中一半的元素,因此平均情况运行时间也为 Θ ( n ) Θ(n) Θ(n)
  
2.2-4 应如何修改一个算法,才能使之具有良好的最好情况运行时间?
  
  
  本节代码链接:https://github.com/yangtzhou2012/Introduction_to_Algorithms_3rd/tree/master/Chapter02/Section_2.2

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值