来一起算法吧

本文是我的算法整理开篇,已不看算法好多年的我,决定重新捡起来,更好的服务业务开发。

算法本质上和数学的相关性很大,即严谨又灵活。其实我不太爱算法,太烧脑,但算法设计的好坏也恰恰是衡量一个开发者能力的标准之一。

算法

本质是用于解决特定运算和逻辑问题的一套流程(这是计算机领域的算法定义),其实算法无处不在,说白了就是解决某个问题的方法步骤。

衡量算法好坏的标准有,

  • 时间复杂度
    时间复杂度描述的是算法耗时,推导的原则有这几点,对某段代码进行耗时计算,得出耗时公式,1假如消耗时间不随输入规模的变化而变化,那么运行时间就是常数,记为 O(1), 2.只保留公式里的最高阶项,且去除最高阶项前面的系数。例如运行时间的公式为 3n^3 + 5n +2,那么时间复杂度记为 O(n^3)。
  • 空间复杂度
    空间复杂度的推导类似于时间复杂度。

相比空间复杂度,大多数情况下更重注时间复杂度。

数据结构

如果说算法侧重的是逻辑思路,那么数据结构就是实现算法的基石。数据结构是数据的组织,管理和存储格式,利用数据结构能更加方便的实现算法。

根据物理与逻辑结构划分,数据结构划分如下,

  • 物理结构
    数组,链表。数组的存储要求连续区域,链表则正好相反,可以有效利用零散空间。
  • 逻辑结构
    栈,队列,树,图等。逻辑结构的数据结构很多都可以用数组和链表分别表示。并且逻辑结构的数据结构又可分为线性结构和非线性结构,例如树,图就是一对多或者多对多的非线性结构。

参考内容

「漫画算法-小灰的算法之旅」

你可能感兴趣的:(来一起算法吧)