数据结构——绪论

数据结构的基本概念

基本概念

1. 数据

能输入到计算机中并被计算机所识别的数、字符、符号的集合。

2. 数据元素、数据项

数据元素是 数据的基本单位,可以由若干数据项组成,数据项是构成数据元素的不可分割的最小单位。
海底捞排队:数据元素-每波顾客的信息 数据元素-顾客的排号、顾客的取号时间、顾客的人数等

3.数据结构、数据对象

结构–各个元素之间的关系
数据结构-相互之间存在一种或多种关系的数据元素的集合
数据对象-具有相同性质的数据元素的集合
在这里插入图片描述
同一拨顾客构成的集合有序关系,因此这个集合是一个“数据结构”
两拨顾客构成的集合没有序关系,但这个集合里的元素都有{x|x是海底捞顾客}的性质,所以这个集合构成“数据对象”

4. 数据类型、抽象数据类型

数据类型是定义在值的集合和定义在此集合上的一组操作的总称。

  1. 原子类型:bool类型(值:{0,1};操作:与、或、非)
    int类型(值:{x|x是整数且-2^31<=x<=(2的31次方-1)};操作:加减乘除等)
  2. 结构类型
    例如:在这里插入图片描述

抽象数据类型 ADT 用数学化的语言定义数据的逻辑结构、定义运算。与具体的实现无关。(忽略了物理结构)

数据结构的三要素

1. 逻辑结构

数据元素之间的逻辑关系

  • 集合
  • 线性结构 数据之间是一对一的关系 每个元素有且仅有一个前驱(除第一个元素),有且仅有一个后继(除最后一个元素)
  • 树形结构 数据之间是一对多的关系
  • 图结构 数据元素直接是多对多关系
2. 物理结构(存储结构)

如何用计算机表示出数据元素的逻辑关系

  1. 顺序存储 物理内存
  2. 链式存储 指针
  3. 索引存储 索引表 关键字+地址 关键字:可以区分不同数据元素的数据项
  4. 散列存储(Hash存储)

如果采用顺序存储,则各个数据元素在物理上是连续的
如果采用非顺序存储,则各个数据元素在物理上是离散的
数据的存储结构会影响存储空间分配的方便程度
数据的存储结构会影响对数据的运算速度

3. 数据的运算
  • 运算的定义–针对逻辑结构
  • 运算的实现–针对物理结构

逻辑结构:队列
在这里插入图片描述
物理结构:顺序存储、链式存储
在这里插入图片描述

运算的定义:

  • 队头元素出队
  • 新元素入队
  • 输出队列长度

  • 运算的实现:999号元素的入队

算法的基本概念

什么是算法

程序=数据结构+算法

数据结构考虑的问题:把现实世界的信息存储到计算机,同时实现对信息的基本操作。
算法:解决实际问题的方法。

算法的五个特性

1. 有穷性

有穷步骤,有穷时间。

2. 确定性

同一个输入,通过算法输出的结果是相同的

3. 可行性

算法策略必须用已具备的基本运算有穷步实现

4. 输入

要有0个或多个输入的数据

5. 输出

要有一个或多个输出

好算法的特质

1. 正确性

算法能正确地解决问题

2. 可读性

算法应具有良好的可读性,帮助人们理解(没有歧义)
算法可以用伪代码表示
也可以用文字描述
但一定要做到无歧义

3. 健壮性

输入非法数据时,算法能适当地做出反应并且处理

4. 高效率与低存储的需求

时间复杂度低 空间复杂度低
在这里插入图片描述
算法一用了五步
算法二只用了两步

算法的时间复杂度

算法时间开销T(n)问题规模n的关系。

如何计算

1. 找到一个基本操作
2. 分析该基本操作的操作次数x与问题规模n的关系x=f(n)
3. x的数量级O(x)就是算法时间复杂度T(n)

常用技巧

1. 加法规则

取高

2. 乘法规则

相乘

3. 常用阶不等式

在这里插入图片描述

三种复杂度

1. 最坏时间复杂度
2. 平均时间复杂度
3. 最好时间复杂度

算法的空间复杂度

无论规模n怎么变化,算法的运行所需的内存空间都是固定的常量,算法空间复杂度为常数阶,算法原地工作
在这里插入图片描述

如何计算

1. 普通程序
2. 递归程序

单次调用的空间复杂度*递归次数

常用技巧

1. 加法规则
2. 乘法规则
3. 常用阶不等式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值