【数据结构】

数据结构包括逻辑结构和存储结构,如数组、链表、栈、队列、树和图等。算法则是解决问题的步骤,关注时间复杂度和空间复杂度。文章介绍了线性结构和非线性结构,以及查找、排序等操作,并通过实例解释了时间复杂度的概念。
摘要由CSDN通过智能技术生成

数据结构

内核:根基

我们到底干什么:研究
数据逻辑结构存储结构以及相关结构上的操作

数据

各种信息  (10学生信息  10000人信息  部门管理图  火车路线构建图)

逻辑结构

无结构     集合
1对1       线性结构
1对多      树形结构
多对多     图形结构

存储结构

顺序存储
连式存储
索引存储 

相关结构上的操作

各种信息 [按照] 线性结构 [在内存] 顺序存储  就是 数组
10学生信息 [按照] 线性结构 [在内存] 顺序存储  就是 数组
1000000学生信息 [按照] 线性结构 [在内存] 连式存储  就是 链表
上面的学生
读取
查找
插入
删除
这些操作都是算法

第一节:什么是数据结构

总体大纲

模块一

线性结构

​		顺序存储[数组]

​		链式存储[链表]

​		线性结构的常见应用之一 栈

​		线性结构的常见应用之二  队列

​		专题:递归

​				1.求1+2+3+...+100和

​				2.求阶乘

​				3.汉诺塔

​				4.走迷宫

模块一

非线性结构

​	树

​	图

模块三

查找

排序			

数据 是什么

数据   说白了  就是信息   信息最常用不就是字符串和数字么   你看嘛像是报纸书籍不都是字加上小数  什么魂斗罗战力多少
那数据结构是什么  关键就在结构这个词上面   类比下结构的出现词
人体结构   是不是结构就有味道了
人体结构就是头了  腿了什么的
那数据结构有什么部位块呢
也就是数据的分类总结   像是数组类似双臂  像是集合类似双腿 就像是人体图片一样  将零散的块   正好在一起成为图   这个图就是数据结构

数据结构:

把现实中大量而复杂的数据类型和特定存储结构保存在存储器(内存)中.以及再次基础上实现的某个功能(比如 查找 删除 排序)
而完成的这些操作的功能的过程就是算法

总的来说:就是把个体和个体之间关系 存放到内存当中

第二节:算法

算法一句话: 完成某个功能的步骤(过程)

解释:

完成泡一杯龙井茶的算法(过程)
第一步:准备 茶杯
第二步:放入茶叶
第三步:导入开水
第四步:等待浸泡
第五步:完成

算法的衡量

1.时间复杂度-----------就是程序执行的次数 
2.空间复杂度-----------占用的最大内存
3.难易程度 ------------是否常人理解
4.健壮性   ------------对于非法输入依然可以正常运行不崩溃

时间复杂度:不是指时间 是次数

常数时间复杂度(O(1)):无论输入规模如何增大,算法执行的时间都不会改变,例如对一个数组进行访问操作,无论数组元素的个数还是位置如何改变,读取操作的时间都是不变的。

线性时间复杂度(O(n)):算法的执行时间与输入大小呈正比,例如对一个有n个元素的数组进行遍历操作,算法需要执行n次。

对数时间复杂度(O(log n)):算法执行时间随着输入规模n的增加而稍微增加,例如二分查找算法。

平方时间复杂度(O(n^2)):如果算法执行步骤为n^2,则它的时间复杂度为O(n^2)。常见的例子是双重循环嵌套。

立方时间复杂度(O(n^3)):如果算法执行步骤为n^3,则它的时间复杂度为O(n^3)  比如三层for循环。


时间复杂度举例:

有数组如下 0123是下标

张三李四王五娃哈哈
0123

操作有:

读取

读取只需要给定下标就能获取值  操作无论怎么变 只执行一次

那么时间复杂度就是  1

查询:

判断是否存在 该操作和数组每个都匹配 

可能提前找到 最坏就是所有找了一遍发现没有

那么 有几个元素n  据需要执行几次 n

随着数量增加而增加

最终时间复杂度就是 n

插入:

找到要插入的位置

然后通过移动把值进去

最好的情况就是在末未插入 七七

张三李四王五娃哈哈七七
01234

只要一步

最坏在0下标插入

全部右移动 腾出0位置

第一步

张三李四王五娃哈哈
0124

第二步

张三李四王五娃哈哈
0134

第三步

张三李四王五娃哈哈
0234

第四步

张三李四王五娃哈哈
1234

第五步 插入

七七张三李四王五娃哈哈
01234

我们发现 最坏情况 有几(n)个元素就需要移动几(n)次

还需要一(1)次插入

时间复杂度 n+1

删除:

删除和插入相反操作

最坏就是删除第一个

第一步删除第一个

第二步第三步…第n步 把后面的前移

需要 n+1

时间复杂度 n+1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值