数据结构 2 算法

算法

  程序 = 数据结构+算法

  算法简单来说,就是处理数据,解决实际问题的方法。

 

算法的特性

  1.有穷性,一个算法必须总在执行有穷步后结束,且每一步都可在有穷时间内完成;

  2.确定性,算法中的每条指令必须有确切的含义,相同的输入必须得到相同的输出;

  3.可行性,算法中描述的操作,必须能用现在已经具备的基本运算实现;

  4.输入,一个算法有0个或多个输入;

  5.输出,一个算法有1个或多个输出。

 

好算法的特点

  正确,可读性,健壮性(面对非法数据能正常反应或处理),高效率(快,时间复杂度低,内存占用少,空间复杂度低)。

 

时间复杂度

  是用来估算算法运行时间的一个式子

  算法的时间开销与问题规模N之间的关系。

   经常会看到,O(1), O(n),O(n^2)这种表示方式,这个大O,在数学中表示上界,这里可以理解为,大约,这个1,不是指1秒,1分钟,而是指一个单位。

  

 

 

 要理解,1不是时间,而是单位,任何基础操作,只要规模不上升到n这个级别,都是1。

另外由于O是大约,近似的意思,所以我们会忽略掉小的影响,例如第二个,当规模大的时候,n在n^2的面前可以忽略。

 

 

 

 

 常见的时间复杂度效率排序

 

 

 

空间复杂度

  算法占据的空间跟问题规模N之间的关系。

 

 

 但是空间复杂度现在讨论的很少,因为硬件上的支持现在也比较便宜了,大家更关注的还是时间复杂度,毕竟空间换时间这个理念为主。

 

posted @ 2020-12-31 22:47  luytest  阅读(92)  评论(0编辑  收藏  举报