算法导论第二章 2.2

本文深入分析了算法的运行时间,分别探讨了2.2节中的不同算法在最佳、平均和最坏情况下的时间复杂度。通过对循环不变式和运行时间的详细计算,得出算法的运行时间是Θ(n²)和Θ(n)。最后,提出了通过修改算法以优化最佳情况运行时间的方法。
摘要由CSDN通过智能技术生成

2.2 分析算法

2-1
   Θ ( n ³ ) Θ(n³) Θ(n³)

2-2

Selection-Sort(A)
1   for i = 1 to A.length - 1
2       Subscript = i                   // 存储下标
3       for j = i to A.length - 1
4           if A[Subscript] > A[j] 
5                Subscript = j          // 存储元素数据更小的数组下标
6       Data = A[Subscript]             // 交换数据
7       A[Subscript] = A[i]             // 交换数据
8       A[i] = Data                     // 交换数据
  1. 该算法的循环不变式:A[1…i]总是排好序的,Subscript总是A[i…n]中最小元素数据的下标
  2. 因为当前面的A[i…n - 1]已经是排序好的,且留在最后的一个元素中的数据一定是整个数组中最大的,所以可以省略掉最后一个的排序
  3. 每条语句的运行之和为:
Selection-Sort(A)
1   for i = 1 to A.length - 1                   c1              n
2       Subscript = i                           c2              n - 1
3       for j = i to A.length	                c3              ①
4           if A[Subscript] > A[j]              c4		②
5                Subscript = j                  c5  		②
6       Data = A[Subscript]                     c6		n - 1
7       A[Subscript] = A[i]                     c7		n - 1
8       A[i] = Data                             c8		n - 1

①   ∑ j = 2 n t j \sum ^{n}_{j=2}t_{j} j=2ntj

②   ∑ j = 2 n ( t j − 1 ) \sum ^{n}_{j=2}\left( t_{j}-1\right) j=2n(tj1)

该算法的运行时间(执行每条语句的运行时间之和)是:
T ( n ) = C 1 n + C 2 ( n − 1 ) + C 3 ∑ j = 2 n t j + C 4 ∑ j = 2 n ( t j − 1 ) + C 5 ∑ j = 2 n ( t j − 1 ) + C 6 ( n − 1 ) + C 7 ( n − 1 ) + C 8 ( n − 1 ) T\left( n\right) =C_{1}n+C_{2}\left( n-1\right)+C_{3}\sum ^{n}_{j=2}t_{j}+C_{4}\sum ^{n}_{j=2}\left( t_{j}-1\right)+C_{5}\sum ^{n}_{j=2}\left( t_{j}-1\right)+C_{6}\left( n-1\right)+ C_{7}\left( n-1\right)+ C_{8}\left( n-1\right) T(n)=C1n+C2(n1)+C3j=2ntj+C4j=2n(tj

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值