前端基础系列(三) -- 算法 + 数据结构基础

2018-01-24  本文已影响50人  bowen_wu

结构化编程

  1. 一行一行执行
  2. 有条件控制语句 if...else...
  3. 有循环控制语句 while(exp) do...

伪代码

流程图

算法

  1. 输入:一个算法必须有零个或以上输入量。
  2. 输出:一个算法应有一个或以上输出量,输出量是算法计算的结果。
  3. 明确性:算法的描述必须无歧义,以保证算法的实际执行结果是精确地 匹配要求或期望,通常要求实际运行结果是确定的。
  4. 有限性:依据图灵的定义,一个算法是能够被任何图灵完备系统模拟的一串运算,而图灵机只有有限个状态、有限个输入符号和有限个转移函数(指令)。而一些定义更规定算法必须在有限个步骤内完成任务。
  5. 有效性:又称可行性。能够实现,算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。

数据结构

即数据的结构

哈希(Hash)

键值对: { '键' : '值' } ==> Array / Object

队列(queue)

栈(stack)

链表(Linked List)

说明:用数组存储满二叉树和完全二叉树,用Hash存储其他的树

算法和数据结构结合

  1. 我们要解决一个跟数据相关的问题
  2. 分析这个问题,想出对应的数据结构
  3. 分析数据结构,想出算法
    数据结构和算法是互相依存、不可分开的

分类:

  1. 分治法:把一个问题分区成互相独立的多个部分分别求解的思路。这种求解思路带来的好处之一是便于进行并行计算。前端主要使用分治法

  2. 动态规划法:当问题的整体最优解就是由局部最优解组成的时候,经常采用的一种方法

  3. 贪婪算法:常见的近似求解思路。当问题的整体最优解不是(或无法证明是)由局部最优解组成,且对解的最优性没有要求的时候,可以采用的一种方法

  4. 线性规划法:见词条

  5. 简并法:把一个问题通过逻辑或数学推理,简化成与之等价或者近似的、相对简单的模型,进而求解的方法

排序算法

上一篇下一篇

猜你喜欢

热点阅读