数据结构
一种研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作之间的相关问题
程序设计 = 数据结构 + 算法
数据结构,就是数据关系,就是数据元素之间存在的一种或多种特定关系的集合。
逻辑结构和物理结构
逻辑结构
数据对象中数据元素之间的相互关系,也是我们之后需要关注和谈论的问题。
常见逻辑结构
-
集合结构:集合结构中数据同属于一个集合,它们之间没有其他不三不四的关系。
-
线性结构:线性结构中数据是一对一的逻辑关系。
-
树形结构:元素之间存在一对多的层次关系。像WBS, dom树一样的类型结构。
-
图形结构:(最复杂),图形结构数据元素是多对多的关系。
物理结构
数据逻辑结构在计算机中存储的方式。研究的就是把数据元素存储到计算机的存储器中。
数据元素的存储结构形式主要有两种
-
顺序存储:把数据元素放在地址连续的存储单元中,其数据间的逻辑关系和物理关系是一致的。例如,编程语言的数组结构。
-
链式存储: 将数据元素放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。需要用指针存放数据元素的地址。例如:医院排队,你只需要注意前一个数据的情况。
算法
数据结构与算法是紧密相关的一组概念。
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
类似于:技巧和方式。对于给定的问题,是可以用多种算法来解决的。
算法的五个特性:输入、输出、有穷性、确定性和可行性。
- 输入、输出:0个或多个
- 有穷性:不可以死循环
- 确定性: 每一个步骤都有确定的含义,不会出现二义性。
- 正确性 1、无语法错误 2、合法输入产出满足要求输出。 3、非法输入能够产生满足规格的说明 4、对于故意刁难的测试输入都有满足要求的输出结果。
- 可读性 便于阅读、理解和交流
- 健壮性
- 时间效率高和存储量低
示例引入
从1累加到100,用计算机算出来
|
|
|
|
学习掌握一些好的算法,对我们解决问题很有帮助。
其他
我们不说怎么能够成为XXX,我们先来看看成为XXX之后要做什么事情,而做这些事情,需要什么样的能力,在拥有了这些能力、做上了这件事情之后,又能向什么方向发展。
把算法当黑盒用的问题在于:黑盒能够解决问题的时候,使用方便,而一旦不能解决问题,或者对质量有所要求,就会感觉无所适从。
作为程序员、工程人员,想用机器学习算法解决实际问题,就得对算法有一定程度的掌握,此外对于数据处理和模型验证,也需具备相应知识。