Frank 直面数据结构

本文详细介绍了数据结构的概念,包括数据、存储和组织,以及数据结构与算法的区别。讨论了内存中数据的存储方式,数组和链表的特性,以及时间复杂度和空间复杂度的分析。此外,还涉及了哈希表、栈、队列、树和图等基本数据结构及其应用。

出处:https://space.bilibili.com/19658621/dynamic
该视频知识产权为B站Micro_Frank所有。

Frank语录:
本门课的目的是将数据结构与代码脱离开来,这是传统教育很难做到的。
了解思想比一个题做个十遍顶用多了。

可以结合每个视频中的问题看看自己能否回答出来

一、Academic

0-0.剖析数据结构的含义,数据结构的用途,区分数据结构与算法

  1. 什么是数据结构?

数据结构(英语:data structure)是计算机中存储,组织数据的方式。

总的来说就是(1)数据的(2)存储与(3)组织。

  1. 分别解释其含义?

1)数据:比如我们的QQ号,微信ID,支付密码了;这些都叫数据;

2)存储:以何种方式存放数据,链表,数组,树,图。。。

3)组织:CRUD增删改查;

线性表就是数组,国际上没有线性表这个词,是我们直译过来的;

  1. 数据结构与算法的关系?

他们并不是与关系,不是学数据结构我就要一定会算法,这是我国的教育方式罢了;算法只是研究组织数据结构最优的CRUD解。它是更好的,更有效地对数据存储。

1-0.内存,内存是如何保存不同数据类型的

1)数据在内存中存储应该是什么样的?

内存条中像图中的每一个单元格都是有自己的地址,一个格子可以是一个字节,那么如果要存取一个大型数据(比如一个4字节的数据),就必须存储在连续的单元格。

请添加图片描述

拿int(占用4个字节)举例,有数组 int arr[1,2];

假如1号单元格已被占用,那么,如果我们存储数组中的1,就必须重新分配一个连续的空间,比如2,3,4,5;

生活中的例子:

住院部,几个病人要求住在连续序号的房间中;

1-1.int类型的范围是如何计算的?为什么会占用四个字节?四个字节为什么可以表示该范围?内存中是怎样的

语言不重要。

1)在c/c++中:

不同的编程语言中取值范围是不同的。在c/c++语言中int范围取决于字长。 字长是计算机处理的最大位数,与cpu有关。所以了,在32位机器上,字长就是32位,此时表示范围:2^32。
考虑正负号(有符号位):表示范围为-(231)~(231)-1
不考虑正负号( 无符号位):表示范围为 0~(2^32)-1

2)python:

python中int范围表示是无限的。

2-0.Computational Analysis of algorithms计算机算法复杂度分析的基本含义

引出时间复杂度与空间复杂度。

以从不同的目的地去往市中心为例子,如下图:

请添加图片描述

去往市中心(downtown)有三个地点(a,b,c),从图中看出三地路程不尽相同。

而去往downtown的快慢取决于路的远近和所使用的交通工具。现在呢,从a,b,c地都有人出发去往市中心,a地乘客使用飞机,b地乘客使用拖拉机,c地乘客使用汽车。最终,a先到达,b最后到达。从这个例子中我们发现,不是路程近就能先到达,它与两个因素都有关。计算机同理。
在计算机中我们可以把路程比作空间复杂度,所使用的交通工具比作时间复杂度。我们通常所说的时间复杂度是使用相同计算能力的机器,考虑如何在更短的时间能够完成任务。

在计算机中,空间复杂度难以度量。

3-0.Big O notation复杂度标记符以及举例

1)该如何理解这些复杂度的数值?

以数组为例

O(1) 查找某个病房的住的是谁

O(n)医生早上查病房,每个病

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值