c语言如何判断一个算法的好坏

c语言如何判断一个算法的好坏
对于同一个问题我们可以编写不同的算法,那么选择那一种算法才是最合理呢?

我们通常会根据以下原则来判断一个算法的好坏:
(前提条件:算法必须是正确,并且满足算法的5个特性)

1 算法执行所消耗的时间,即效率问题
2 算法执行所消耗的存储空间
3 算法的可读性要强,易于编码,方便调试
4 在算法接受一些非法输入时,算法可以识别,并且给出相应的处理

通常情况下,我们会选择一个存储空间小 ,执行时间短的算法,但是现实中往往很难做到这一点,
如何我们需要节省算法的执行时间,那么需要消耗大量的存储空间(例数据库的索引技术,为了我们能够快速的查找出我们想得到的数据,需要提前在系统中存储一些关键信息)
如何我们需要节省存储,那么就需要耗费大量的算法执行时间(例 压缩文件,我们为了使文件尽可能的小,我们需要使用压缩工具对文件进行压缩操作,而压缩和解压操作 往往需要耗费计算机的执行时间)

因此我们应该根据实际情况来选择合适的算法,对进行使用的程序,应该选择运行时间短的算法,而对机器存储容量比较小,而数据量有比较大的程序,我们需要尽可能的采用算法的运行时间来弥补算法的空间不足。


在大多数情况下,我们只讨论算法的时间特性,因为随着计算机硬件的迅速发展,存储空间费用越来越低,讨论算法的空间复杂度的必要性越来越小。
算法耗费时间 =算法的所有语句执行时间之和。
每条语句执行时间= 该语句执行次数*执行一次所需的时间。