算法和算法分析概念

1 算法及其性能标准

算法是求解一类问题的任意一种特殊的方法,较严格的来说,是对特定问题的求解步骤的一种描述,它是指令的有限序列。
算法的五个特征:输入、输出、确定性、能行性、有穷性
衡量一个算法的性能,主要有以下标准:正确性,简明性,健壮性,效率。
 

2 算法的时间复杂度

判断算法的性能要考虑的一个基本特征就是问题实例的规模,规模一般是输入量(有时也涉及输出量)。
算法的事前分析:在排除程序运行环境的因素后来讨论算法的时间效率。
算法的事后测试:测试一个程序在所选择的的输入数据下运行时实际所需要的时间。
程序步:语法或语义上有意义的程序段。
程序步的计算实例:

求一个数组元素累加之和的递归程序,

 

float Sum(float list[],int n)
	{
		count++;	//针对if条件
		if(n)
		{
			count++;	//针对下面的一条语句
			return Sum(list,n-1) + list[n-1];
		}
		count++;
		return 0;	//针对return语句
	}

 

当 n = 0 时,所需步数为 2 ;

当 n > 0 时,执行语句和第一句 return;则可表示为

T(n) = 2 + T(n-1) = 2 + 2 + T(n-2)
 = 2 + 2 + 2 + T(n-3)
 = 2n + T(0)
 = 2n + 2
程序步不能确切地反映程序运行的实际时间。
 

3 渐进时间复杂度

定义:设f(n)和g(n)是定义在正整数上的正函数,如果存在两个正常数c和n0,使得当n>=no时,有f(n)<=cg(n),则记作f(n) = O(g(n)),被称为大O记号(big-Oh notation)
 大O记号用以表达一个算法运行时间的上界。当我们说一个算法具有O(g(n))的运行时间时,是指该算法在计算机上的实际运行时间不会超过g(n)的一个常数倍。
例:设一个程序的实际执行时间T(n) = 3.6 n^3 + 2.5 n^2 + 2.8 ,则T(n) = O(n^3),O(1)表示常数计算时间,计算法只需执行有限程序步。
注:1bn = log2 n
渐近时间复杂度按从小到大的顺序排列为O(1)<O(1b)<O(n)<O(n1bn)<O(n^2)<O(n^3)







 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值