`
abcxo
  • 浏览: 32406 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
阅读更多

1.算法概述-算法与程序+算法复杂性分析

 

明天就要考试了,不知道是否能来得及,我在想反正都要研究算法的,比如现在开始弄了,考试只是研究算法路上的一个小测试而已,废话不说,开始吧

 

 

 

算法与程序:

算法是什么,很多人能大概feel到算法是什么,但是要很准确的说出来,有难以启齿,书上是这么概述的,算法是:解决问题的一种方法或者过程。对于我的理解,就是你解决这个问题的思路及你的代码实现方法,例如地图最短路径的寻径方法,你怎么解决,那你就肯定写一大堆的方法在类里面,然后调用这样,那么这一大堆的方法封装起来不就是你的寻径算法了吗!

 

 

 

算法复杂性分析:

对于很久之前,计算机的内存和性能都很落后,所以考察程序往往的关键点是看能否内存占有率,性能是否高,到了今天我们的计算机去到了一个比较先进的程度,很多人就忽略了良好的编程习惯,还有大部分的时间是放在ui或者功能上面,其实对于算法的研究是很有必要的,因为好算法是一个软件的支撑,我还记得我有一次面试,是一家只有几个人的公司,超小,他一上来就问我什么贪心算法,还有排序算法,当时我对这些是不记得了,也不熟悉,然后被他当面的羞辱了一番,这件事情我到现在依然无法释怀,因为他说到了我的弱点,就是算法,我无力反击,所以算法的确是每一家公司都需要的,还是认真学好吧,如果说设计模式是哲学,那么算法就是数学。

 

时间复杂性:需要时间资源的量称为时间复杂性,这是一个抽象的量,我们通常以一个元操作作为单位,然后进行计算,当然不可能没有情况都计算,所以分3种,最好,最坏,平均,很明显最坏往往是我们最关心的,因为不能有最坏啊,崩溃是系统的大忌,稳定是一个软件最基本的东西。随着发展,那么就出现了复杂性渐近形态(他码的,书上的语言好复杂),这就是我们平时看到的O作为渐近复杂度,其实原理也不难,就是公式{T(N)-T~(N)}/T(N),然后什么常数啊,去掉就可以了,当N-无穷,求出大O就ok了(具体还有其他的统计细节,我觉得太麻烦了,思想才是重点)

空间复杂性:这个和时间复杂性差不多,主要说的是内存大小啊,程序占的大小啊,会产生的大小啊,这个我觉得平时用到的不多,因为没有时间的意义重要.

 

 

 

 

 

太数学了,我数学学得不好,还是哲学的东西好玩,不过希望下来的各个算法带来的压力不大。over!

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics