数据结构Review 绪论及第一章-算法

绪论 

一. 数据结构在学什么

1. 高效地用程序代码信息化现实问题

1d93875dfab4bb1abb445fed89312236.png

二. 数据结构的基本概念

1. 数据元素——描述一个个体

1a2bc6591bce484833560dc84e5dc69c.png

数据元素是数据的基本单位,通常作为一个整体考虑和处理。

数据元素可由若干个数据项组成,数据项是构成数据元素的不可分割的最小单位。

2. 什么是数据对象

8c72826d8c57a5700ee26c9d10a8ceec.png

数据对象是具有相同性质的数据元素的集合,是数据的一个子集。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

三. 数据结构的三要素

1. 逻辑结构

集合结构(各个元素属于同一集合)

线性结构(一对一,除第一个元素都有唯一前驱,除最后一个元素都有唯一后继,如:排行榜、餐厅排号)

树形结构(一对多,如:思维导图、文件夹和文件)

网状结构/图结构(多对多,如:道路信息、好友信息)

2. 数据的运算

针对某种逻辑结构,定义基本运算(如:线性结构——①查找第i个数据元素②在第i个位置插入③删除)

3. 物理结构(存储结构)

常见:顺序存储、链式存储、索引存储、散列存储

以线性结构为例:

顺序存储,把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。

链式存储

bcfe783cc0a1ec8902cd2fa0420eea6d.png

索引存储

0a99d57b16f1aff6783bb17f755bebae.png

散列存储/哈希(Hash)存储

存储结构会影响存储空间分配的方便程度和数据运算速度(如:插入新元素)

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

数据类型

1)原子类型,值不可再分(int、boolean)

2)结构类型,值可分解(struct)

抽像数据类型(Abstract Data Type,ADT

 

第一章 算法

一. 算法的基本概念

1. 什么是算法

程序 = 数据结构 + 算法

数据结构是要处理的信息,算法是处理信息的步骤

2. 算法的特性

有穷性、确定性(相同输入得到相同输出)、可行性(可代码实现)、输入,输出

好的算法:正确性、可读性、健壮性(处理非法数据、报错等)、高效率与低存储需求(时间复杂度和空间复杂度低)

二. 算法的时间复杂度

1. 时间复杂度T(n)

事先预估算法时间开销T(n)和问题规模n的关系

Q1:是否可以忽略表达式的某些部分?

A1:低阶部分和常数。

5bb3caa718efbddfd5d7dd5f4d241b63.png

数量级:“常对幂指阶”

edc7bc3c3623437812c5d91688577c0d.png

Q2:每一行代码都要计算吗?

A2:只关注循环体,若有循环嵌套,只关注最深层循环。

计算算法时间复杂度时,通常只关注最坏时间复杂度、平均时间复杂度

小练习

1.

while(i<=n){
i=i*2;
}

eq?2%5E%7Bx%7D%3En时,循环结束,

eq?x%3D%5Clog_%7B2%7Dn&plus;1

eq?T%28n%29%3DO%28x%29%3DO%28%5Clog_%7B2%7Dn%20%29

2.

int flag[n]={1,2,3,...,n};
for(int i = 0;i<flag.size();i++){
    if(flag[i]==n){
        break;
    }
}

最好时间复杂度T(n)=O(1);

最坏:T(n)=O(n);

平均:每个位置出现概率为eq?%5Cfrac%7B1%7D%7Bn%7Deq?%281&plus;...&plus;n%29%5Cfrac%7B1%7D%7Bn%7D%3D%5Cfrac%7Bn&plus;1%7D%7B2%7D,T(n)=O(n).

三. 算法的空间复杂度

1. S(n) 空间复杂度(以及算法原地工作的概念)

算法原地工作:无论问题规模怎么改变,算法所需内存空间为常量S(n)=O(1)。

与时间复杂度类似:只关注与问题相关的数量级(“常对幂指阶”)

1.

int flag[n][n];
int other[n];
int i;

eq?S%28n%29%3D4n%5E%7B2%7D&plus;4n&plus;4%3DO%28n%29

2.函数递归带来的内存开销

void function(int n){
    int a,b,c;
    if(n>1){
        function(n-1);
    }
    printf("break%d\n",n);
}

eq?S%28n%29%3D4*4*n%3DO%28n%29

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WISHMELUCK1'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值