学习数据结构能是我们更好的了解对数据的定义,操作等活动,也能够使我们对于数据的种类等能能够做到合理的区分,具体问题具体分析:
一,数据结构的一些基本概念:
首先,我们了解一下数据结构的定义;
一般的用计算机解决问题的过程如下:数学模型->算法->程序,程序设计是为计算机处理问题编制一组指令,算法则是处理解决问题的策略,二数据结构呢可以认为是数据的组织形式与操作形式。Niklaus Wirth也指出:Algorithm+Data Structure=Programs
在这里再谈一个概念:数据,数据通俗来讲有很多种,不单单局限于数字的形式,好比音频,视频等的也可以被称为数据,再如图片等也可以被称为数据,计算机处理其实就是将数据抽象成为计算机识别的指令进行处理。
数据项则是指数据不可分割的最小标识单位。数据元素可以由若干个数据项组成。
数据元素则是数据结构中讨论的基本单位。
计算机在数据计算方面是进场被用到的:如下面这个求50m高塔物体落到地面的例子:
首先我们需要考虑一下所面临的对象有哪些:高度h ,时间t,重力加速度g:
对象之间的关系h=1/2 g t*t
解决问题的方法如下:t=sqrt(2h/g)
设计代码如下:
概括的说数据结构是研究非数值计算的程序设计问题中计算机操作对象以及它们之间的关系和操作,研究数据之间有哪些关系,如何表示和储存,处理。
数据结构中的数据的关系: 集合关系,线性关系(如学生信息表中的一行),树形关系(文件路径),图形关系(地铁路线等),数据结构的逻辑表示是带有关系和集合的数据集合。其表示方法有以下几种:
1.图示表示:由顶点和边构成的图,顶点表示数据,边表示数据之间的结构关系。
2.二元组表示 Data_Structures=(D,S); D表示数据,S代表数据之间的关系。
其存储结构包括数据元素和关系的记录,例如线性关系可以用储存的相对位置来表示数据元素之间的逻辑关系,复杂一点的如链式结构,除了有一个数据储存之外,还需要
有附加位置信息的指针来表示储存位置。
抽象数据类型:
二,算法的有关问题:
算法是为了解决某类问题规定的一个有限操作序列,具有5个重要的特性:
有穷性,每个步骤能在一定的步数和时间内完成;
确定性,每条指令语义唯一,不存在二义性,且只有一个入口和出口,任何条件下,都只有一条执行路径。
可行性,算法可行,能够合理的实现,次数有限。
有输入,
有输出;
设计原则:
正确性,输入数据能够得到正确的结果,对于精心选择的、典型的数组也能够得到满足要求的结果;通常以此作为一个算法是否合格的标准。
可读性,健壮性,效率和存储量的需求的方法有两种:事后统计法和事前分析估计法
算法时间多项式是最常用的:
O(1)<O(logn)<O(n)<O(nlogn)<O(n*n)<O(n*n*n)
指数时间关系为:
O(2的N次幂)<O(n!)<O(n的n次幂)当n很大时,指数时间算法和多项式算法在所需时间上非常悬殊。如下图: