算法运行时间的分析

前言

        本文的主要内容是 以选择排序算法为例进行算法运行时间的分析。


选择排序

        选择排序算法大家都很熟悉,所以不会详细介绍其原理,功能是实现数组的非降序排序。伪代码如下:

SELECTION_SORT( A )                                 运行 时间                    次数

       for i = 1 to length[A]-1                                    c1                        n

              do min= i                                                  c2                        n-1

                    for j = i+1 to length[A]                        c3                      ∑_(i=1)^(n-1)▒〖n-i+1〗   ps:参见注1

                         do if A[min] > A[j]                          c4                       ∑_(i=1)^(n-1)▒〖n-i〗

                                   then min = j                          c5                        t

                    temp = A[i];                                         c6                       n-1 

                    A[i] = A[min];                                       c7                       n-1

                    A[min] = temp;                                    c8                       n-1


使用循环不变式检验算法的正确性

            初始化 :第一次迭代式i = 1,在第一次迭代之前i = 0,退出循环,相当于空数组进行排序。始终成立

            保持 :假设i = 3 < length[A] - 1;则表示A[1...3]为有序,A[4...length[A]]为无序,即从A[4....length[A]]中找出一个最小值与A[4]交换,从而使i = 4 时能够满足A[1...4]为有序。

            结束 :最后一次迭代式i = length[A-1],那么当i = length[A]是,已退出循环,结束函数,而此时A[1....length[A]]已是个数为n的有序序列了,所以算法正确。


计算选择排序算法的运行时间

       T = c1*n + c2*(n-1) + c3*(n-i+1)*(n-1) + c4*(n-i)*(n-1) + c5*t + (c6 + c7 + c8)*(n-1)

       最好情况: t = 0 则T = ((c3+c4)/2) * n2 + (c1+c2+c3/2-c4/2+c6+c7+c8)*n - (c2+c3+c6+c7+c8); T = an2  +  bn  + c

       最坏情况: t = ∑_(i=1)^(n-1)▒〖n-i〗; 则T = ((c3+c4+c5)/2) * n2 + (c1+c2+c3/2-c4/2-c5/2+c6+c7+c8)*n - (c2+c3+c6+c7+c8);T = an2  +  bn  + c

      所以在最好最坏的情况下,运行时间都为n2级。

注1:由于粘贴不过来,所以用图片替代: == ∑_(i=1)^(n-1)▒〖n-i〗         == ∑_(i=1)^(n-1)▒〖n-i+1〗


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值