算法与数据结构

2018-12-02  本文已影响0人  Jason416

一、基本概念和术语

数据(data): 对客观事物的符号表示 ,在计算机中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素(data element):数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
数据项(data item): 若干个数据元素组成一个数据元素。数据项是数据的不可分割的最小单位。
数据对象(data object): 性质相同的数据元素的集合,是数据的一个子集。
数据结构(data structure): 相互之间存在一种或多种特定关系的数据元素的集合。

结构(structure): 特定关系的数据元素之间的关系称为结构。
通常有以下四种结构:

  1. 集合
    结构中的数据元素除了 同属于一个集合 外,别无其它关系(与数学中的集合概念一致

  2. 线性结构
    结构中的数据元素之间存在 一对一 的关系。

  3. 树形结构
    结构中的数据元素之间存在 一对多 的关系。

  4. 图状或网状结构
    结构中的数据元素之间存在 多对多 的关系。

Note: 以上的结构类型均为抽象出来的数学模型。是逻辑上的划分,称之为逻辑结构。

物理结构(physic structure):数据结构在计算机中的表示,也称存储结构。
物理结构分两种:顺序存储结构链式存储结构

数据类型(data type)一个值的集合 和定义在这个值集上的一组操作 的总称。
数据类型分两种: 原子类型结构类型

抽象数据类型(abstract data type, ADT):指一个数学模型以及定义在该模型上的一组操作。


二、算法和算法分析

1. 算法

算法(algorithm)是对特定问题求解步骤的一种描述,它是指令的有序序列,其中每一条指令表示一个或者多个操作;此外一个算法还有下列5个重要特性:

一直跑不停的算法,要他干嘛?

人读都会有二义性的算法,计算机怎么执行?

基于某种算法实现的算法,某种就实现不了,那不就一直套下去了?

有时候没有输入,只想hello world?

没有输出的算法,比如单纯while(1),这叫语句序列吧?

2. 算法设计的要求

通常设计一个“好”的算法应考虑以下目标:

显然,达到第D层意义下的正确是极为困难的,所有不同输入数据的数量大得惊人,逐一验证的方法是不现实的。对于大型软件需要进行专业测试,而一般情况下,通常以第C层意义的正确性作为衡量一个程序是否能合格的标准。

3. 算法效率的度量

度量方法有两种:事后统计的方法事前分析估算的方法
事后统计受计算机软硬件环境和需要提前编制统计程序等一系列问题的困扰,常常不采用该方法。常常采用事前分析估算的方法来度量一个算法的执行效率。

4. 算法的时间复杂度

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),记作:

T(n) = O(f(n))

它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度(asymptotic time complexity),简称时间复杂度。

注: “O”的形式定义为:若f(n)是正整数n的一个函数,则Xn = O(f(n)) 表示存在一个正的常数M,使得当n>=n0时都满足|Xn| <= M|f(n)|。

5. 算法的存储空间需求

类似与算法的时间复杂度,算法所需存储空间内的度量空间复杂度(space complexity)可以记作:

S(n) = O(f(n)

明天更新线性表~

上一篇 下一篇

猜你喜欢

热点阅读