码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-12-03 01:51:10      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:算法复杂度   大o阶推导   时间复杂度排序   

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

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

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

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


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

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

标签:算法复杂度   大o阶推导   时间复杂度排序   

原文地址:http://3240611.blog.51cto.com/3230611/1585751

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!