算法的五个重要特性:
有穷性
确定性
可行性
输入:0或多个
输出:一个或多个
算法复杂性包括两个方面,一个是算法效率的度量(时间复杂度),一个是算法运行所需要的计算机
资源量的度量(空间复杂度),这也是评价算法优劣的重要依据。
一个程序的时间复杂度是指程序运行从开始到结束所需要的时间。通常分析时间复杂度的方法是从
算法中选取一种对于所研究的问题来说是基本运算的操作,以该操作重复执行的次数作为算法的时间
度量。一般来说,算法中原操作重复执行的次数是规模n的某个函数T(n)。由于许多情况下要精确计
算T(n)是困难的,因此引入了渐进时间复杂度在数量上估计一个算法的执行时间。
我们通常使用"O()"来表示时间复杂度,其定义如下:如果存在两个正常数c和m,对于所有的
n,当n≥m时有f(n)≤cg(n),则有f(n)=O(g(n))也就是说,随着n的增大,f(n)渐进地
不大于g(n)。例如,一个程序的实际执行时间为T(n)=3n^3+2n^2+n,则T(n)=O(n^3)。T
(n)和n^3的值随n的增长渐近地靠拢。常见的渐进时间复杂度有:
一个程序的空间复杂度是指程序运行从开始到结束所需的存储量。它通常包括固定部分和可变部分
两个部分。
在算法的分析与设计中,经常会发现时间复杂度和空间复杂度之间有着微妙的关系,经常可以相互
转换,也就是可以利用空间来换时间,也可以用时间来换空间。
顺序查找:将待查找的关键字为key的元素从头到尾与表中元素进行比较,如果中间存在关键字为key
的元素,则返回成功;否则,则查找失败。
时间复杂度为O(n)。
算法基础
算法基础知识
算法分析基础
时间复杂度
空间复杂度
查找
评论0