数据结构与算法基础概述

瑞士计算机科学家Niklaus Wirth  教授提出:算法+数据结构=程序

算法:对数据运算的描述。

数据结构:数据的逻辑结构和存储结构

程序设计:针对实际问题选择一种好的数据结构和设计一个好的算法。

要设计出一个好的程序,就必须有好的算法。好的算法在很大程度上取决于描述实际问题的数据结构,必须建立在研究数据的特性及数据之间存在的关系的基础之上。

 

数据(data):描述客观事物的符号集合;

数据元素(data element):数据的基本单位,有时一个数据元素可由若干个数据项组成;

数据项(也称字段、域、属性):具有独立含义的最小标识单位;

数据对象(data object):具有相同性质的数据元素的集合。

数据结构(data):带有结构的数据元素的集合。

一般包括三方面内容:

1.数据的逻辑结构。数据元素之间的逻辑(或抽象)关系

  ①线性结构

    数据元素(结点)之间存在着一对一的关系,且结构中仅有一个开始结点和一个终端结点,其余结点都是仅有一个    直接前趋和一个直接后继。如线性表,栈和队列。

  ②非线性结构

    数据元素之间存在着一对多或多对多的关系,即一个结点可能有多个直接前趋和多个后继。如树,图,网状。

2.数据的存储结构(物理结构)。数据元素及其关系在计算机内的存储方式

 两个结构

  ①顺序存储结构:向量中各元素按其逻辑关系”顺序“存储。

  ②链式存储结构:向量中各元素通过指针连接存储在内存中。

 四种基本的存储方法实现

  ①顺序存储方法:把逻辑上相邻的结点存储在物理位置上也相邻的连续存储单元里;

  ②链接存储方法:用一组不一定连续的存储单元存储逻辑上相邻的元素,元素间的逻辑关系是由附加的指针域表示的;

  ③索引存储方法:在存储元素信息的同时,还建立附加的索引表。表中的索引项一般形式是:(关键字,地址)。关键字是能唯一标识一个元素的一个数据项或多个数据项的组合。

  ④散列存储方法:根据元素的关键字直接计算出该元素的存储地址。

3.数据的运算。对数据元素施加的操作(行为)

常用的运算:检索、插入、删除、更新、排序

数据类型(data type):一个值的集合和定义在这个值集上的一组操作的总称。

按”值“的不同特性划分

  ①原子类型(非结构类型):其值不可分解,例如基本类型(整型、实型、字符型和枚举型)以及指针类型和空类型等简单类型

  ②结构类型:其值可由若干个分量(或成分)按某种结构组成,它的分量可以是非结构型的,也可以是结构型的。例如数组、结构等。

抽象数据类型(Abstract Data Type,ADT):是抽象数据的组织和与之相关的操作。例如并、交、差运算

 

算法:对特定问题的求解步骤的一种描述,指令的有限序列。

特性

  - 有穷性:算法在执行有穷步后能结束

  - 确定性:每一指令有确切的含义,无二义

  - 可行性:每一操作都可以通过已经实现的基本运算执行有限次来实现

  - 输入:零个或多个人输入

  - 输出:一个或多个输出

 算法的评价标准

(1)正确性:对于一切合法的输入数据,该算法经过有限时间的执行都能得到正确的结果;

(2)时间复杂性:执行算法所耗费的时间;

(3)空间复杂性执行算法所耗费的存储空间;

(4)易于理解、易于编程、易于调试。

 

时间复杂度

  运行时间=算法中每条语句执行时间之和

  每条语句执行时间=频度*语句执行一次所需时间

  但是不同计算机系统执行一次基本操作的时间是千差万别,不能用一个统一的标准来衡量

  (渐进)时间复杂度:T(n)=O(f(n))

    n-问题规模

  

posted @ 2022-03-21 13:47  景池  阅读(107)  评论(0编辑  收藏  举报