《数据结构与算法》(一)绪论

记一下电子科技大学《数据结构与算法》的笔记
主要研究内容:1、计算机要处理的数据本身
2、数据的各种逻辑关系(逻辑结构)和存储表示(物理结构),以及它们之间的相应关系
3、对每种结构定义相适应的各种运算
4、设计出相应的算法
5、分析算法效率
6、常见的数据结构有:数组、栈、队列、表、串、树、图和文件等

第一章:绪论

数据结构由一个四元组来表示:Data_Structure = ( D , L , S , O ) ,
L : Logical Structure ( 逻辑结构 ) S : Storage Structure ( D和L在计算机中的存储表示) O:Operation
数据元素、数据元素之间的逻辑关系、逻辑关系在计算机中的存储表示、以及所规定的操作这四部分

1、逻辑结构(数据元素之间客观存在的关系,与数据在计算机中的存储无关,主要用于算法分析与设计)
归结为以下四类:线性结构、树形结构、图形结构、集合结构

2、存储结构(数据结构在计算机当中的存储表示,主要用于指导算法的实现)
两种基本的存储结构:顺序存储和链式存储

顺序存储:把逻辑上相邻的元素存储在物理位置相邻的存储单元中。(数组)
Loc(元素i)=Lo (首地址)+ (i - 1)* m(第i个元素)

链式存储结构:在数据元素中添加一些地址域或辅助结构,用于存放数据元素之间的关系

3、数据结构的操作:数据元素的查找、插入、遍历和排序

4、数据类型:是程序设计语言用来刻画操作对象的特性的一个值的集合和定义在此集合上的一组操作的总称。

5、数据结构包括了抽象数据类型(Abstract Data Type , ADT)
ADT一般包含数据类型、数据元素之间关系及操作三要素(D,R,O)(因为不需要考虑存储结构)
其中:1、D是数据元素集
2、R是D上的关系集合
3、O是对D的基本操作集

算法复杂度分析:需要时间资源的量称为时间复杂度,需要空间资源的量称为空间复杂度。这个量只依赖于算法要解的问题的规模、算法的输入和算法本身的函数。
用C表示复杂度,N表示规模,I表示输入,A表示算法本身,有C=F(N,I,A)。一般把时间复杂度和空间复杂度分开,并分别用T和S来表示,则有:T=T(N,I)和S=S(N,I)。(通常,让A隐含在复杂度函数名当中)

一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费的时间就多。一个算法中的语句执行次数(计算步)称为语句频度或时间频度。记为T(n)。(只算执行语句)

一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记作O(f(n))。

分析时间复杂度的时候规定输入:
1、最坏情况下的时间复杂度。
2、最好情况下的时间复杂度。
3、平均情况下的时间复杂度。

在算法复杂度分析中,可以采用渐进复杂度分析代替详细数学分析来比较算法效率。(离散数学上有详细讲到)

你可能感兴趣的:(数据结构与算法,数据结构与算法)