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

基本定义:

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

关心算法的正确性效率

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

基础方法:

        伪代码(Pseudocode):

                例如:

                《算法导论》复习——CHP1、CHP2 算法基础_第1张图片

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

        循环不变式(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在实际的计算机上每执行一次所用的时间。

                仍以插入排序为例:

《算法导论》复习——CHP1、CHP2 算法基础_第2张图片

                        有:

《算法导论》复习——CHP1、CHP2 算法基础_第3张图片

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

限界函数:

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

你可能感兴趣的:(算法导论,排序算法,算法)