数据结构基础概念
-
什么是数据? ——数据,各种类型的信息。
-
什么是数据结构?——数据结构,不仅仅是数据的组成形式,更重要的是!如何灵活地使用各种类型的数据结构?从而加快代码地运行速度,才是重点。
'例如:"str"、["s","t","r"]' -
数据结构的4种操作? 一般数据结构都会有“读取”、“查找”、“插入”、“删除”,这4种操作。然而,操作速度的快慢,时间复杂度的大小,起决定性因素的,就是步数。
例如,A操作5步,B操作500步,显然是A快。
常见的数据结构:
#数组
数组: 程序声明数组时,计算机会划分出一串连续的内存地址以备使用。
内存地址(数组): 里面存放着“内容”和“索引” ,且每一个数组都会记住第一个格子所在的内存地址。
索引(数组): 每一个数组的索引都是从0开始的。
| 内存地址 | 1000 | 1001 | 1002 | 1003 | 1004 |
|---|---|---|---|---|---|
| 数据 | '星期一' | '星期二' | '星期三' | '星期四' | '星期五' |
| 索引 | 0 | 1 | 2 | 3 | 4 |
- 读取: 查看数组中某个索引所指的数据值。
记作:“O(1)”
目标1:查找索引0的数据值 --> 计算机直接找到内存地址1000,获取数据值“星期一”,记作O(1)
目标2:查找索引1的数据值 --> 计算机直接找到内存地址(1000 + 1),获取数据值“星期二”,记作O(1)
目标3:查找索引4的数据值 --> 计算机直接找到内存地址(1000 + 4),获取数据值“星期五”,记作O(1)
……
目标4:查找索引n的数据值 --> 计算机直接找到内存地址(1000 + n),获取数据值"N",记作O(1)
- 查找: 查看数组中是否包含某个数据值,如果包含,返回该值的索引。
记作O(N)
# 线性查找:从头到尾检查每一个内存地址,直到找到为止。所以,最少1步,最多n步。
目标1:查看数据值'星期一'是否存在?索引0(数据值“星期一”),结束查找。记作O(1)
目标2:查看数据值'星期二'是否存在?索引0 --> 索引1(数据值“星期二”),结束查找.记作O(2)
……
目标n:查看数据值N是否存在?索引0 --> 索引1 --> 索引N,结束查找.记作O(N)