这几天冠以“算法”两个字的贴子很多,我觉得有必要讨论一下,解决以下问题才能更好地学习算法:
1。什么是算法?
2。什么是优秀的算法?
3。算法是否能独立于计算机体系之外,独立于具体语言之外?
个人认为:
[问题1]
算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是推理实现的算法,后者是操作实现的算法。--------------引用于CSDN上的一篇文章
我个人认为这个定义比较明暂完整地阐明了“算法”的概念及内涵。 这里需要着重注意的一点:实现你的解题思路也是算法不可缺失的一部分。形成解题思路实际上就是在纯算术概念上的解题,如果仅此而已,并不是一个完整的算法。一个完整的算法必须在特定的计算机体系使用特定的语言能实现你的解题思路,并具有有穷性,确切性,输入,输出,可行性5个特性的二进制代码(或者源码)。
[问题2]
什么是优秀的算法? 1。效率高,运行速度快 2。占用内存少 但是,这两点往往是相对立的,需要与实现的环境相结合,来决定到底是牺牲内存换速度,还是牺牲速度换内存。如:在一个小内存的系统中,往往采用后者,而在一个酷求速度的程序里往往采用前者。
[问题3] 综合前两个问题,我们就不难看出,一个完整的算法不能独立于计算机体系之外,独立于具体语言之外,如果抛开具体实现环境来谈算法是不完整的算法。算法,有其共性的一面(即形成解题思路),这是独立于计算机体系之外,独立于具体语言之外的;也有其特性的一面(即编写程序),这是与具体实现环境相关的。
以上乃本人之愚见,欢迎批判,欢迎抬扛!