数据结构笔记——绪论

第0章 绪论

1.1数据结构的基本概念

数据结构概念:数据结构是一门研究非数值计算的程度设计问题中计算机的操作对象以及它们之间关系和操作等的学科。

 

数据:数据是人们利用文字符号、数字符号以及其他规定的符号对现实世界的事件及其活动所作的抽象描述。

 

数据元素:一个事件的一组数据(数据项构成数据元素)

数据项:构成数据元素的数据

 

抽象数据元素:没有实际含义的数据元素(数据类型不确定)

抽象数据元素类型:没有确切定义的数据类型

 

数据的逻辑结构:数据元素之间的相互联系方式  P16

分类:线性结构、树结构和图结构

线性结构:除第一个和最后一个数据元素外,每个数据元素只有一个前驱数据元素和一个后继数据元素

树结构:除根节点外每个数据元素只有一个前驱数据元素,可有零个或若干个后继数据元素

图结构:每个数据元素可有零个或若干个前驱数据元素,可有零个或若干个后继数据元素

 

 

数据的存储结构:数据元素在计算机中的存储方式(顺序存储结构和链式存储结构)P16

 

顺序存储结构:数据元素存储在一块连续的内存空间中,特点为逻辑上相邻的数据元素在物理上(内存存储位置)也相邻,数据间的逻辑关系表现在数据元素的存储位置关系上(数组实现)

链式存储结构:使用指针把相互直接关联的结点(前驱结点或后继结点)链接起来,特点为逻辑上相邻的数据元素在物理上不一定相邻,数据间的逻辑关系表现在结点的链接关系上(结点:数据元素域和指针域组成的一个结构体)

 

数据的操作:对一种数据类型的数据进行的某种处理

数据的操作集合:对一种数据类型的数据所有的操作

数据的操作分类:具体和抽象

抽象角度下,数据的操作讨论数据类型数据应具备的操作的逻辑功能;具体角度下,主要讨论操作的实现算法(操作必须在数据存储结构确定后才能进行)

常用数据结构:表、堆栈、队列、串、数组、树、二叉树、图等

 

1.2 抽象数据类型和软件构造方法

数据类型:一个类型和定义在这个类型上的操作集合(高级语言下的基本数据类型)

抽象数据类型:一个逻辑概念上的类型和这个类型上的操作集合(用户设计的数据类型,一般用DataType表示)

 

1.3 算法和算法的时间复杂度

算法:描述求解问题方法的操作步骤的集合

算法性质:P19

  1. 输入性:具有零个或若干个输入量
  2. 输出性:至少产生一个输出或执行一个有意义的操作
  3. 有限性:执行语句的序列是有限的
  4. 确定性:每条语句的含义明确,无二义性
  5. 可执行性:每条语句都应在有限的时间内完成

 

算法设计目标:P20

  1. 正确性
  2. 可读性
  3. 健壮性
  4. 高时间效率
  5. 高空间效率

 

算法时间质量的度量

  1. 事后统计法:算法编制程序实际运行时间比较(麻烦)
  2. 事前统计法:数学方法分析(主要研究算法处理的数据个数n)

 

影响因素:(1)编程语言  (2)编译产生的机器语言代码的质量  (3)机器执行速度

                    (4)问题的规模(算法处理的数据个数n)

 

算法时间效率(时间复杂度):算法处理的数据个数n的函数, 通常采用O(f(n))表示法(O(f(n)))读作大O的f(n)

定义1-1  T(n)=O(f(n))当且仅当存在正常数c和n0,对所有的n(n>=n0)满足

T(n)<=c*f(n)

O(f(n))给出了函数f(n)的上界,只要n比较大时一般均成立,一般不考虑n比较小时不成立的情况,n为算法处理的数据个数,分析一个算法中基本语句执行的次数和数据个数n的函数关系就可以求出算法的时间复杂度

P22~P24四个重要典型例题

猜你喜欢

转载自blog.csdn.net/qq_40270579/article/details/81099165