数据结构——绪论


数据的逻辑结构描述
​ 数据的存储结构表示
​ 数据结构的运算定义
​ 设计实现运算的算法
​ 分析算法的效率

培根:方法是旧的,问题是新的。

求解问题 → \rightarrow 数据逻辑结构 → \rightarrow 数据存储结构 → \rightarrow 数据基本运算:算法

1 基本术语

数据元素:是数据(集合)中的一个“个体”,它是数据的基本单位。
数据项:用来描述数据元素的,它是数据的最小单位。
数据对象:具有相同性质的若干个数据元素的集合。
数据结构:是指带结构的数据元素的集合。


​ 一个数据结构的构成:逻辑结构+存储结构+数据运算
逻辑结构:数据元素之间的逻辑关系;
数据的存储结构(或物理结构):数据元素及其关系在计算机存储器中的存储方式;
数据运算:施加在该数据上的操作。

2 逻辑结构

​ 归纳为4种:
1)集合
​ 元素之间关系:无
​ 特点:数据元素之间除了“属于同一个集合”的关系外,无其他逻辑关系。最松散,不受任何制约。
Alt

2)线性结构
​ 元素之间关系:一对一
​ 特点:开始元素和终端元素都是唯一的,其余元素都有且仅有一个前驱元素和一个后继元素。
Alt

3)树形结构
​ 元素之间关系:一对多
​ 特点:开始元素唯一,终端元素不唯一。除终端元素外,每个元素有一个或多个后继元素;除开始元素外,每个元素有且仅有一个前驱元素。Alt
4)图形结构
​ 元素之间关系:多对多
​ 特点:所有元素都可能有多个前驱元素和多个后继元素。Alt

3 存储结构

​ 归纳为4种:
1)顺序存储结构
​ 所谓顺序就是存储单元的地址连续,其数据间的逻辑关系和物理存储关系是一致的。

2)链式存储结构
​ 数据元素的存储单元是任意的,其数据间的逻辑关系需要用一个指针存放数据元素的地址。

3)索引存储结构
4)哈希(散列)存储结构

4 数据类型

定义:指一组性质相同的值的集合及定义在此集合上的一些操作的总称。

​ 数据类型可以分为两类:

  1. 原子类型:是不可再分解的基本类型,包括整型、实型、字符型等;
  2. 结构类型:由若干个类型组合而成,是可以再分解的。例如,整型数组是由若干整型数据组成的。

抽象数据类型(Absract Data Type,ADT):是指一个数学模型及定义在该模型上的一组操作。

5 算法分析
5.1函数的渐近增长

输入规模n在没有限制的情况下,只要超过一个数值N,这个函数就总是大于另一个函数,我们称函数是渐近增长的。

​ 判断一个算法效率时,我们可以忽略函数中的常数与最高次项相乘的常数其他次要项,应该关注主项(最高阶项)的阶数

5.2算法时间复杂度

​ 确定语句总的执行次数T(n)的数量级
T ( n ) = O ( f ( n ) ) T(n)=O(f(n)) T(n)=O(f(n))
​ 用大写O( )来体现算法时间复杂度的记法,称之为大O记法

分析算法的复杂度,关键就是要分析循环体结构的运行情况
​ 循环的时间复杂度=循环体的复杂度 * 该循环运行的次数
​ 一般地:

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

​ 举个李子:

int count=1;
while(count<n){
	count=count*2
}

​ 退出循环的条件是,count不再小于n,count又是每次循环乘以2,那么多少个2乘以count才会大于n呢?于是,建立方程 2 x = n 2^x=n 2x=n,得到 x = l o g 2 n x=log_2n x=log2n。所以时间复杂度就是 O ( l o g n ) O(logn) O(logn)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值