《快速排序》引起关于算法的讨论

昨天笔者写了一篇帖子:html

c#实现最简快速排序,你绝对能够看懂前端

 

有多个同窗共同提到一个问题,实现算法的过程当中,你的内存消耗太大,因此算法没有任何意义。因此我单独开一个帖子,对这个质疑进行解释java

 


 

  首先我本人软件从业5年,学校里面主修c和c++,毕业后前后接触和使用的语言有c#,java,python,以及一系列的前端脚本语言(js、jq)等。不能说本身如今的能力有多么强,可是基本能够应付目前的开发任务。我我的资质平平,虽然喜欢研究技术,可是本身并非一个聪明人。python

  说一下我本身对算法的理解:我认为算法是一个实现目标的过程,追求的是时间成本,也就是计算步骤,对于你们提到的内存消耗,我认为自己就不属于算法讨论的范畴。算法和编程语言是没有任何关系的,说白了,代码只是实现算法的工具。你用什么工具去实现,全凭你我的。c++

  


 

固然,内存消耗也是必需要考虑的,可是我以为不该该是咱们来考虑,或者说全局来看,这种消耗是值得的。我为何这么说,下面我给出个人几条理由:程序员

1、代码的阅读成本以及理解成本直接对应着错误成本算法

相信你们有过这个感觉,一些优秀的代码,本身却很难读懂,即便理解了,让你本身独立写出来又会很难,或者过一段时间,你又忘了这段代码的意思。这个状况直接致使了你本身根本没法使用这些优秀的代码。为何?由于从一开始你本身就没有真正理解,就和咱们上学考试同样,死记硬背以后立刻就忘。固然排除一些聪明的同窗理解力确实强,可是很遗憾,大多数人不是!这样就会致使咱们出现大量的错误。编程

 

2、内存消耗是咱们要考虑的事情吗?c#

这个问题的答案是确定的,每一个程序员都必须去考虑这个问题。我这里要给你们补充说的另一点,这个实际上是一个寻找平衡点的事情。众所众知,除了汇编和c、c++,大多数语言是不须要咱们直接操做内存的,像java和c#都有专门的GC去处理这个事情。能够这么说,它们都在尽可能避免咱们去操做内存。实际上GC在通常状况下是足够优秀的。当咱们在纠结着内存消耗的时候,有没有想过,这一部份内存消耗换来的是本身代码流畅正确的运行,笔试的时候,轻松完成的快感。编程语言

 

3、最优的代码留给小机灵鬼去作

再回到最开始的问题,算法是步骤和过程,咱们使用代码去实现算法,小机灵鬼的实现方式确定要比咱们普通人更省资源,那么优化代码的事情就交给他们吧,事实上咱们在平时的工做中,也不须要你去实现这些算法,由于这些算法早就被完美的实现了。而咱们本身理解了算法,而且也能够正确的实现算法,那么至少咱们是一个懂原理,会使用工具的人。那么你就是一个优秀的程序员。

 

文末:

其实你们说的都对,而后我只是向你们表达一下我对于编程的理解。

相关文章
相关标签/搜索