《算法导论》复习——CHP1、CHP2 算法基础

基本定义:

算法是一组有穷的规则,规定了解决某一特定类型问题的一系列运算。

关心算法的正确性效率

算法的五个重要特性:确定性、能行性、输入、输出、有穷性

基础方法:

        伪代码(Pseudocode):

                例如:

                

                  个人觉得不需要过于追求伪代码的书写标准,不然反而失去了其意义。

        循环不变式(Loop invariants)

                定义:

                在第一次进入循环之前成立、以后每次循环之后还成立的关系。

                利用循环不变式证明算法正确性:

           1)初始化:证明初始状态时循环不变式成立,即在循环开始之前为真;

           2)保持:证明每次循环之后、下一次循环开始之前循环不变式仍为真;

           3)终止:证明循环可以在有限次循环之后终止。 

                以插入排序为例:

                1):在循环开始之前,j = 2,A[1 ~ j - 1]中仅A[1]一个元素,则A[1 ~ j - 1]有序成立。

                2):每一次循环,在有序的A[1 ~ j - 1]中找到元素A[j]的位置k,将A[k + 1 ~ j - 1]的所有元素后移一位,并将原来的A[j]插入到A[k]的位置,A[1 ~ j]保持有序,此时原来的“A[1 ~ j]”变成了新的A[1 ~ j - 1]。

                3):每次循环后 j 自增1,循环条件为 j < n ,因此 n - 1次循环后,循环必定结束。

算法分析

        目的:预测算法需要资源(时间、空间)的程度。

算法的执行时间

                = \sum f_it_i

                f_i:是运算i的执行次数,称为该运算的频率计数。

                t_i :是运算i在实际的计算机上每执行一次所用的时间。

                仍以插入排序为例:

                        有:

                         我们往往更关心最坏情况的执行时间

限界函数:

       取自频率计数函数表达式中的最高次项, 并忽略常系数,记为:g(n)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值