代码改变世界

数据结构

2018-03-05 09:17  SummerVan  阅读(358)  评论(0)    收藏  举报

2018-3-3
数据结构:是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科(ps:用来干什么用的)
程序设计的实质是选择一种合适的数据结构和一种好的算法来解决问题
1.数据:是用来描述客观事实的符号,是计算机中可以操作的对象,是输入给计算机能被识别并处理的符号集合,包括了数值类型和非数值类型(ps:前提条件是1.可以输入到计算机里去 2可以被计算机识别处理)
2.数据元素:是组成数据的有意义的基本单位(是数据结构中建立数据模型的着眼点但不是最小单位)
3.数据项:一个数据元素可以由若干个数据项组成,是数据里的最小单位 (不能分割)
4.数据对象:是性质相同(数据元素具有相同数量和类型的数据项叫性质相同)的数据元素的集合,是数据的子集(在实际运用中不发生混淆的情况下可以将数据对象简称为数据)
对应关系:数据→数据对象→数据元素→数据项

例:我有一个point数组 那么这个数组是数据对象 数组里的每一个point都是一个数据元素  point的x,y属性则为数据项
数据结构的定义:是相互之间存在一种或多种特点关系的数据元素的集合

数据结构分为两类:1.逻辑结构(数据对象中数据元素的对应关系又分为四种)
(1)集合结构:数据元素同在一个集合没有特定关系(类似数组集合)
(2)线性结构:存在一对一的关系
(3)树形结构:一对多
(4)图形结构:多对多
2.物理结构(又称存储结构分为两种)
(1)顺序存储结构:把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的(类似数组集合)
(2)链式存储结构:把数据元素存放在任意的存储单元里,可以是连续的也可以不是(不能反映其逻辑关系)
逻辑结构是面向问题,物理结构是面向计算机 其基本目标是将数据及其逻辑关系存储到计算机的内存里
数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称,又分为原子类型和结构类型
原子类型:是不可再分解的基本类型包括整形,字符型等
结构类型:由若干个类型组合而成的是可以再分解的(整形数组分解成若干个整形数据)
抽象数据类型(ADT):把一些有一定关联的基本数据类型打包,当做新的数据类型使用

算法
算法是解决特定问题的求解步骤的描述,在计算机中表现为指定的有限序列每条指令表示一个或多个操作(没有通用的算法就像没有包治百病的药)
五大基本特征:
1输入:算法具有零个或多个输入(ps:如果输出的是固定的就不需要输入 好比hello world但一般情况需要)
2输出:算法具有至少一个或多个输出,不然算法没有意义
3有穷性:在执行有限的步骤后自行结束而不会出现无限循环(每一个步骤的时间是可接受的,无限循环会导致程序卡死)
4确定性:算法的每一步骤都有确定的含义,不会出现歧义(在一定条件下只有一条执行的路径相同的输入只能有唯一的输出)
5可行性:算法的每一步都必须是可行的,意味着算法可以转换成程序在计算机上运行并能得出正确的结果