数据结构与算法

107 阅读2分钟

数据结构基础概念

  • 什么是数据? ——数据,各种类型的信息。

  • 什么是数据结构?——数据结构,不仅仅是数据的组成形式,更重要的是!如何灵活地使用各种类型的数据结构?从而加快代码地运行速度,才是重点。'例如:"str"、["s","t","r"]'

  • 数据结构的4种操作? 一般数据结构都会有“读取”、“查找”、“插入”、“删除”,这4种操作。然而,操作速度的快慢,时间复杂度的大小,起决定性因素的,就是步数例如,A操作5步,B操作500步,显然是A快。

常见的数据结构:

#数组

数组: 程序声明数组时,计算机会划分出一串连续的内存地址以备使用。

内存地址(数组): 里面存放着“内容”和“索引” ,且每一个数组都会记住第一个格子所在的内存地址。

索引(数组): 每一个数组的索引都是从0开始的。

内存地址10001001100210031004
数据'星期一''星期二''星期三''星期四''星期五'
索引01234
  • 读取: 查看数组中某个索引所指的数据值。记作:“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)