首页 > 编程语言 > 详细

算法复杂度分析方法以及算法概述

时间:2014-12-03 01:48:15      阅读:310      评论:0      收藏:0      [点我收藏+]

算法定义:解决特定问题的求解步骤的描述.

算法特性:有穷性、确定性、可行性、输入、输出

算法的设计要求:正确性、可读性、健壮性、高效率和低存储量需求

算法度量方法:事后统计方法(不科学)、事前分析估算方法


函数的渐近增长:给定两个函数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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!