算法基础总结

来源:互联网 发布:复读好不好知乎 编辑:程序博客网 时间:2024/06/04 22:46

    算法的总结图如下:


算法基础

      算法是对特定问题求解步骤的描述,是指令的有限序列,具有:有穷性、确定性、可行性、输入、输出。从算法中总结出的算法设计策略是设计算法的一般性方法,这些技术可以帮助程序员设计出“好”的算法。

      对于一个问题的解法有很多,算法也各不相同,选择算法的标准首先是算法的正确性、可靠性、简单性、易理解性,其次是时间复杂度和控件复杂度要低。相对较低的时间复杂度和空间复杂度的算法对系统资源要求小,系统可以在单位时间内执行更多的算法,提高系统的利用率和效率。

      选择算法以后,要运用一定的手段把算法的思想表示出来,算法的表示通常有自然语言、流程图、程序设计语言、伪代码等。

            自然语言:优点是容易理解,缺点是容易出现二义性且算法冗长。

            流程图:优点是直观易懂,缺点是严密性不如程序设计语言,灵活性不如自然语言。

            程序设计语言:优点是机器可以直接运行,缺点是抽象差,拘泥于算法的具体细节,还对算法设计者提出一定                                       的要求。

            伪代码:介于自然语言和程序设计语言之间,采用程序设计语言的基本语法,同时结合自然语言来表达。

算法分析基础

      时间复杂度:不同的输入规模即使相同的算法也会有不同的时间复杂度,因此根据输入的不同,将时间复杂度分3种情况。

            最佳情况:应用最佳情况分析的例子是已经证明了基于比较的排序算法的时间复杂度的下限,就不用再改进线                               性时间复杂度的算法。

            最坏情况:使算法执行最多的输入,一般会进行最坏情况的时间复杂度的分析,提供了算法的保障,在很多算                               法来看,平均情况通常和最坏情况下的时间复杂度一样。

            平均情况:算法的平均运行时间,通常为每一类输入发生的概率乘以每一类输入的执行时间的和。

      渐进符号:

            O记号表示函数集合,往往给出一个算法运行的时间上界。

            Ω记号与O相反,给出算法的时间下界。

           Θ介于前两个,给出算法的渐进紧致界。

      递归式:

           展开法:将递归式展开,直到得到一个求和表达式。

           代换法:做出预测的解,用数学归纳法证明猜测的正确性,求出解的常数。

          递归树法:应用树结构来补充代换法的不足,将每层结点相加得到每层的代价集合,每层代价相加得到所有代                               价。

        算法基础部分是进行算法设计和分析的基础,这部分知识在运用中将会产生很大的帮助,对于算法的时间复杂度和空间复杂度来讲,不同的算法不同的运行条件都是不一样的,但是学会了如何分析算法,举一反三,算法也就不那么遥不可及了。

 

1 0
原创粉丝点击