01.诸论

一、数据结构总览
1.“数据结构”课程的内容

“数据结构”的课程内容就是基本数据组织和数据处理方法,包含各种数据的逻辑结构描述、各种数据的存储结构表示、各种数据结构的运算定义、设计实现运算的算法和分析算法的效率。

2.“数据结构”的学习方法
1198226-af1ea91251194d71.png
1198226-43d1201afa704f7b.png
1198226-793947671a1ba01e.png
1198226-ddb50883cb271fe6.png
二、什么是数据结构

数据:所有能够输入到计算机中,切能被计算机处理的符号的集合。在数据结构中主要讨论结构化数据

  • 数据元素:是数据(集合)中的一个“个体”,他是数据的基本单位。
  • 数据项:数据项是用来描述数据元素的,他是数据的最小单位。
  • 数据对象:具有相同性质的若干个数据元素的集合,如整数数据对象就是所有整数的集合。

默认情况选,数据结构中讨论的数据都是数据对象。
数据结构:是指带结构数据元素的集合
数据结构等于数据对象加上结构,其中的数据对象指相同性质的数据元素的集合,而结构是指数据元素之间的关系构成结构。
数据结构中讨论的元素关系主要是指相邻关系邻接关系
一个数据结构的构成:逻辑结构+存储结构+数据原酸。

  • 数据元素之间的逻辑关系=>数据的逻辑结构
  • 数据元素及其存储在计算机存储器中的存储方式=>数据的存储结构
  • 施加在该数据上的操作=>数据运算
1.数据的逻辑结构表示

数据的逻辑结构是面向用户的,他有各种各样的表示形式。如表格、二元组、图形等。
各种各样的数据呈现出不同的逻辑结构,归纳为4种。

  • 集合
    元素之间关系:无
    特点:数据之间除了“属于同一个集合”的关系外,别无其他逻辑关系。
  • 线性结构
    元素之间关系:一对一
    特点:开始元素和终端元素都是唯一的,除此之外,其余元素都有且仅有一个前趋元素和一个后继元素。
  • 树形结构
    元素之间关系:一对多
    特点:开始元素唯一,终端元素不唯一。
  • 图形结构
    元素之间关系:多对多
    特点:所有元素都有可能有多个前趋元素和多个后继元素。
2.数据的存储结构表示

数据在计算机存储器中存储方式就是存储结构。它是面向程序员的。
逻辑结构映射到存储结构。存储结构如结构体数组、链表等。
在软件开发中,人们设计了各种存储结构。归纳为4中基本的存储结构。

  • 顺序存储结构
  • 链式存储结构
  • 索引存储结构
  • 哈希(散列)存储结构
3.数据运算

数据运算是对数据的操作。分为两个层次:运算描述和运算实现。
1198226-43486e5982803e1f.png
数据结构求解问题的过程
三、算法及其描述
1.什么是算法

数据元素之间的关系有逻辑关系和物理关系,对应的运算有基于逻辑结构的运算描述和基于存储结构的运算实现。
通常把基于存储结构的运算实现的步骤或过程称为算法。
算法有五个重要的特性:

  • 有穷性:在有穷步之后结束,算法能够替你。
  • 确定性:无二义性
  • 可行性:可通过基本运算有限次执行来实现,也就是算法中每一个动作能够被机械地执行。
  • 有输入
  • 有输出
2.算法描述
1198226-147a9100f497e004.png
3.算法分析

算法分析目的:分析算法的失控效率以便改进算法性能。分析算法占用的资源,主要分析CPU时间和内存空间。

①算法时间复杂度分析

一个算法由控制结构(顺序、分支和循环三种)和原操作(指固有数据类型的操作,如+、-、*、/、++和--等)构成的。算法执行时间取决于两者的综合结果。
算法分析方式

  • 分析算法的执行时间
    求出算法所有原操作的执行次数(也称为频度),它是问题规模n的函数,用T(n)表示。
    算法执行时间大致=原操作所需要的时间xT(n)。
    比较不同算法的T(n)大小得出算法执行时间的好坏。
  • 算法的执行时间用时间复杂度来表示
    算法中执行时间T(n)是问题规模n的某个函数f(n),记作:T(n)=O(f(n))
    记号“O”读作“大O”,它表示随问题规模n的增大算法执行时间的增长率和f(n)的增长率相同。

一个没有循环的算法的执行时间与问题规模n无关,记作O(1),也称为常数阶
一个只有一重循环的算法的执行时间与问题规模n的增长呈线性增大关系,记作O(n),也称为线性阶
其余常用的算法时间复杂度还有平方阶O(n2)立方阶O(n3)对数阶O(log2n)指数阶O(2n)等。

各种不同算法时间复杂度的比较关系如下:

1198226-17afaab4300d891c.png

NP=P?是目前计算机科学的难题之一
算法时间性能比较:一般认为 O(n)的时间性能好于算法 O(n2)

②算法空间复杂度分析
空间复杂度:用于度量一个算法在运行过程中临时占用的存储空间大小。
一般也作为问题规模n的函数,采用数量级形式描述,记作:S(n)=O(g(n))
若一个算法的时间复杂度为O(1),则称此算法为原地工作就地工作算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值