数据结构之基础概念

  数据结构是计算机科学中的一门综合性的专业基础课,它不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序和大型应用程序的重要基础。

  几个数据结构相关的基本术语和概念:

  •  数据(Data):是客观事物的符号表示;在计算机科学中指的是所有能输入到计算机中并被计算机程序处理的符号的总称。
  •  数据元素(Data Element):是数据的基本单位,在程序中通常作为一个整体来进行考虑和处理。
  •  数据项(Data Item): 数据项是数据的不可分割的最小单位,一个数据元素可由若干个数据项组成。
  •  数据对象(Data Object):性质相同的数据元素的集合,是数据的一个子集。如字符集C={'A','B','C',...}.
  •  数据结构(Data Structure): 是指相互之间存在一定关系的数据元素的集合。
  •  数据类型(Data Type):一个值的集合和定义在该值集上的一组操作的总称。

  数据结构的形式定义:

  数据结构的形式定义是一个二元组:

  Data-Structure=(D,S);

  其中D是数据元素的有限集,S是D上关系的有限集。

  抽象数据类型(Abstract Data Type, 简称ADT):是指一个数学模型以及定义在该模型上的一组操作。

  ADT的定义仅是一组逻辑特性描述, 与其在计算机内的表示和实现无关。因此,不论ADT的内部结构如何变化,只要其数学特性不变,都不影响其外部使用。
       ADT的形式化定义是三元组:ADT=(D,S,P),其中:D是数据对象,S是D上的关系集,P是对D的基本操作集。

  数据元素之间的逻辑结构有四种基本类型:集合、线性结构、树型结构、图状结构或者网状结构。

  数据结构在计算机内存中的两种存储结构:顺序存储结构和链式存储结构。

  数据结构的三个组成部分:

  1. 逻辑结构:数据元素之间逻辑关系的描述:D_S=(D,S);
  2. 存储结构:数据元素在计算机中的存储及其逻辑关系的表现称为数据的存储结构或者物理结构。
  3. 数据操作:对数据要进行的运算。

  算法:是对特定问题求解方法(步骤)的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。

  算法有以下五个特性:

  1. 有穷性: 一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
  2. 确定性:算法中每一条指令必须有确切的含义。不存在二义性。且算法只有一个入口和一个出口。
  3. 可行性: 一个算法是能行的。即算法描述的操作都可以通过已经实现的基本运算执行有限次来实现。
  4. 输入: 一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。
  5. 输出: 一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。

  我们都知道我们设计的算法是有优劣的,那么一个好的算法应该是什么样子的呢?它至少应该遵循以下一个标准:

  •  正确性(Correctness ): 算法应满足具体问题的需求。
  •  可读性(Readability): 算法应容易供人阅读和交流。可读性好的算法有助于对算法的理解和修改。
  •  健壮性(Robustness): 算法应具有容错处理。当输入非法或错误数据时,算法应能适当地作出反应或进行处理,而不会产生莫名其妙的输出结果。
  •  通用性(Generality): 算法应具有一般性 ,即算法的处理结果对于一般的数据集合都成立。
  •  效率与存储量需求: 效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。一般地,这两者与问题的规模有关。

  如何来衡量一个算法的效率与存储量需求呢?我们引入时间复杂度和空间复杂度两个概念。

  算法中基本操作重复执行的次数是问题规模n的某个函数,其时间量度记作   T(n)=O(f(n)),称作算法的渐近时间复杂度(Asymptotic Time complexity),简称时间复杂度。
  以下六种计算算法时间的多项式是最常用的。其关系为: O(1)<O(㏒n)<O(n)<O(n㏒n)<O(n2)<O(n3);指数时间的关系为:O(2n)<O(n!)<O(nn)。

  空间复杂度(Space complexity) :是指算法编写成程序后,在计算机中运行时所需存储空间大小的度量。记作:   S(n)=O(f(n))  

原文地址:https://www.cnblogs.com/mohanchen/p/9308497.html