算法导论学习2

2.2 算法分析

  一般的,对于算法来说,重点关注的是对算法的时间和空间度量,也就是时间复杂度和空间复杂度。

         算法所需要的时间与输入的规模同步增长的,而时间复杂度就是衡量算法执行的基本操作数的一个函数。

         对于插入排序来说,当需要排列的数组分别为顺序排列和逆序排列时,算法的时间复杂度是不一样的。

根据算法执行的每一步,每一步所执行的次数,得出一个时间衡量函数。

顺序排列:T(n)=an+b ,为n的线性函数

逆序排列:T(n)=an^2+bn+c ,为n的二次函数

上述分别为最佳情况和最差情况,一般考察算法的最差运行时间!一般的,平均情况下的运行时间一般与最差情况一样差!

         当比较不同算法的效率时,如果一个算法的最坏情况运行时间比另一个算法的低,其效率认为更高。

 

课后习题:

1.       因为当n很大时,可以忽略低阶项的影响。

2.       选择排序伪代码

InputA[a1,a2,…,an]

Output: Sorted A

for  i = 1:n-1

         for  j = i+1:n

                   find min of A[i:n]

   end

  A[i] <--> A[min]

end

 

循环不等式,我们选择A[1,i-1]为已经排好序的数组,而剩余的元素比这些元素大,满足循环不等式。只循环n-1是因为剩余的第n个元素已经是最大的!

 

当所有元素按照升序排序时,

该算法按照降序排序也一样

因此舍去低阶项,该算法的时间复杂度可以记为:

3 当查找数组中元素的可能性相等时,平均和最坏情况下都满足线性搜索

4 比较合理的输入使得算法可以有最佳运行时间

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值