绪论部分
2016.10.02
前面蹭了刘丽珏老师的数据结构,但是由于找工作,加上校园大使的宣传和蓝杰那边的学习及比赛,啦啦啦,反正借口就是这么多了。好吧,国庆好好来看下书吧。
数据结构的定义:
数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等等的科学。
常见的数据结构有:表(lists)、数组(arrays)、栈(stacks)、队列(queues)、树(trees)、图(graphs)、串(string)和文件(files)等。
1.数据(Data):所有能输入到计算机中便被计算机处理的符号的总称。
2.数据元素(Data Element):是数据(集合)中一个“个体”,在计算机中通常作为1一个整体进行考虑和处理,是数据结构中讨论的基本单位。
3.数据对象(Data Object):性质相同的数据元素的集合。
4.数据结构(Data Structure):数据元素之间抽象化的相互关系以及这种关系在计算机中到存储表示。
数据结构的分类:
从关系或结构分,数据结构可以归纳为以下四类:
集合:数据元素之间除了“同属于一个集合”之外,无其它关系
线性结构:一个对一个,如线性表、栈、队列
树形结构:一个对多个,如树
图像结构:多个对多个,如图
数据结构包括“逻辑结构”和“物理结构”两个方面:
逻辑结构(Logical structure):是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合上的若干关系来表示。
物理结构(Storage structure):是逻辑结构在计算机中的表示和实现,又称为“存储结构”。
数据结构是一个二元组:DS=(D,S)
其中:D是数据元素的有限集,S是D上关系的有限集。
数据结构在计算机中表示(映像)称为数据的物理结构,又称为存储结构。
顺序映像(Sequential mapping):以相对的存储位置表示后继关系
链式映像(Chaining mapping):以附加信息(指针)表示后继关系
数据类型:数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
算法(algorithms):
算法是为了解决某类问题而规定的一个有限长的操作序列。一个算法必须满足一下五个重要特征:
1.Finiteness(有穷性)、 2.Definitess(确定性)、 3.Effectivess(可行性) 4.Input(有输入) 5.Output(有输出)
设计算法时,通常应考虑达到以下目标:
1.正确性 2.可读性 3.健壮性 4.高效率与低存储量需求
算法时间复杂度的估算
一般情况下,原操作重复执行的次数是问题规模(问题大小)n的某个函数f(n)。此列中f(n)=n*2,所以,算法的时间标度记作:T(n)=O(f(n)).
算法的空间复杂度定义为:
S(n)=O(g(n))
表示随着问题规模的增大,算法运行所需存储量的增长率与g(n)的增长率相同。