算法定义:解决特定问题的求解步骤的描述.
算法特性:有穷性、确定性、可行性、输入、输出
算法的设计要求:正确性、可读性、健壮性、高效率和低存储量需求
算法度量方法:事后统计方法(不科学)、事前分析估算方法
函数的渐近增长:给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n>N,f(n)总是比g(n)大,那么我们说f(n)的增长渐近快于g(n)。
于是,可以得出结论:判定一个算法好不好,可以对比算法的关键执行次数函数的渐近增长性,基本就可以分析出:某一个算法,随着n的变大,它会越来越优于另一个算法,或者越来越差于一个算法。
推导大O阶的步骤:
用常数1取代运行时间中的所有加法常数
在修改后的运行次数函数中,只保留最高阶项
如果最高阶项存在且不是1,则去除与这个项目相乘的常数
得到的结果就是大O阶
通过这个步骤,我们可以得到算法的运行次数表达式后,很快可以得到它的时间复杂度,即大O阶。
推导大O阶很容易,但是如何得到运行次数的表达式却是需要数学功底的。
常见时间复杂度排序:
O(1)<O(logn)<O(n)<O(nlongn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)
原文地址:http://3240611.blog.51cto.com/3230611/1585751