什么是算法
以下是高德纳在他的著作《计算机程序设计艺术》里对算法的特征归纳:
- 输入:一个算法必须有零个或以上输入量。
- 输出:一个算法应有一个或以上输出量,输出量是算法计算的结果。
- 明确性:算法的描述必须无歧义,以保证算法的实际执行结果是精确地匹配要求或期望,通常要求实际运行结果是确定的。
- 有限性:依据图灵的定义,一个算法是能够被任何图灵完备系统模拟的一串运算,而图灵机只有有限个状态、有限个输入符号和有限个转移函数(指令)。而一些定义更规定算法必须在有限个步骤内完成任务。
- 可行性。能够实现,算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。
算法大分类
前端最常用的算法是分治法:把一个问题分区成互相独立的多个部分分别求解的思路。这种求解思路带来的好处之一是便于进行并行计算。另外还有动态规划法、贪婪算法、线性规划法、简并法。
什么是数据结构
就是数据的结构 。。(哈哈,废话)
常用结构
数据结构的种类有:数组、列表、栈、队列、链表、字典、散列、集合、树、图
浅析算法和数据结构的关系
一般来说是这样的:
- 我们要解决一个跟数据相关的问题
- 分析这个问题,想出对应的数据结构
- 分析数据结构,想出算法
数据结构为算法提供服务。算法围绕数据结构操作。
所以说:程序=数据结构+算法;
一张加深理解的图
数据结构和算法.png参考文献
网友评论