2.算法的时间和空间复杂性度量

算法的运行时间依赖于所用的计算机系统、编译器、可用存储空间大小,还依赖于所用的编程语言,系统提供的标准函数库和动态链接库等。

可以对算法的运行时间进行测量,以评估算法的时间和空间效率,但在不同的机型、编译器版本、硬软件配置的情况下,想通过测量结果来判断算法执行效率的优劣是不可行的。

最好是通过比较算法的时间和空间复杂度来评价算法的优劣,因为时间和空间复杂度与具体运行环境和编译器版本无关。

算法的复杂度度量与问题规模

  1. 算法的时间复杂度是指当问题的规模从1增加到n时,解决这个问题的算法在执行时所耗费的时间也由1增加到T(n),则称此为算法的时间复杂度为T(n)。
  2. 算法的空间复杂度是指当问题的规模从1增加到n时,解决这个问题的算法在执行时所占用的存储空间也由1增加到S(n),则称此算法的空间复杂度为S(n)。

一般来说,时间复杂度度量和空间复杂度度量都是问题规模的函数,因此在算法分析时有两件事要做:

  • 明确问题规模;
  • 具体分析算法的程序代码,再出算法具体服从何种函数。

为了简化分析,仅涉及算法中可执行语句,及所需的附加存储空间,时间复杂度与空间复杂度的单位都为1。

时间复杂度度量

为估算算法的时间复杂度看需要统计算法中所有语句中的执行频度,即所有语句的执行次数。

计算如下:
算法的时间复杂度
=算法中所有运算语句的总执行时间
=算法中每条运算语句所执行时间的总和
=每条语句的执行次数×该语句执行时间

由于在计算机中基本运算语句,如加、减、乘、除、转移、存取等的运算时间受计算机硬件、编译器的编译方法、操作系统的调度算法等的影响,很难准确估计,所以在度量时可视每条基本运算语句的执行时间为单位时间。

可以设定算法中每条运算语句的执行时间=该语句执行次数。

[程序 1-19] 计算矩阵各行元素的和

void example(float x[][m],int m){
   
//计算并输出m行m列矩阵x各行元素的和
	float sum[m];int i,j;
	for(
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值