码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
数据结构 | 绪论
文章目录
数据结构在学什么
408各科之间的联系
什么是数据
计算机处理的数据
数据元素——描述一个个体
什么是数据对象
什么是数据结构
数据结构的三要素
逻辑结构
集合
线性结构
树形结构
网状(图)结构
数据的运算
物理结构(存储结构)
顺序存储
链式存储
索引存储
散列存储
数据类型vs抽象数据类型
数据类型
抽象数据类型
什么是算法?
算法的特性
有穷性
确定性
可行性
输入
输出
“好”算法的特质
正确性
可读性
健壮性
高效率与低存储量需求
算法效率的度量
如何评估算法时间开销?
算法的时间复杂度
时间复杂度小练习
程序运行时的内存需求
空间复杂度
函数递归调用带来的内存开销
数据结构在学什么
如何用程序代码把现实世界的问题信息化
如何用计算机高效地处理这些信息从而创造价值
408各科之间的联系
什么是数据
数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合【二进制 0/1】
数据是计算机程序加工的原料
计算机处理的数据
早期的计算机——只用于处理纯数值型问题
现代计算机——经常处理非数值型问题
对于非数值型的问题
每个个体的具体信息
个体之间的关系
数据元素——描述一个个体
数据元素:【数据元素是数据的基本单位】,通常作为一个整体进行考虑和处理
数据项:一个数据元素可由若干数据项组成,【数据项是构成数据元素的不可分割的最小单位】
什么是数据对象
数据对象是具有【相同性质】的数据元素的集合,是数据的一个子集
数据结构是【相互之间存在一种或多种特定关系】的数据元素的集合
什么是数据结构
数据结构是相互之间存在一种或多种特定关系的数据元素的集合
同一个数据对象里面的数据元素,可以组成不同的数据结构
数据结构的三要素
逻辑结构
表示的是数据元素之间的逻辑关系
集合
线性结构
树形结构
网状(图)结构
数据的运算
针对于某种逻辑结构,结合实际需求,定义基本运算
物理结构(存储结构)
如何用计算机表示数据元素的逻辑关系
顺序存储
链式存储
索引存储
散列存储
若采用顺序存储,则各个数据元素在物理上必须是连续的;若采用非顺序存储,则各个数据元素在物理上可以是离散的
数据的存储结构会影响存储空间分配的方便程度
数据的存储结构会影响对数据运算的速度(Eg:在b和d之间插入新元素c)
运算的定义是针对逻辑结构的,指出运算的功能
运算的实现是针对存储结构的,指出运算的具体操作步骤
数据类型vs抽象数据类型
数据类型
数据类型是一个值的集合和定义在此集合上的一组操作的总称
原子类型:其值不可再分的数据类型
结构类型:其值可以再分解为若干成分(分量)的数据类型
抽象数据类型
Abstract Data Type,ADT
是抽象数据组织及与之相关的操作
定义一个ADT,其实就是定义了一个完整的数据结构,其实就是对一个数据结构的逻辑特性(逻辑结构+数据运算)的一个描述,而数据结构的实现者才需要去关注逻辑结构在计算机内部如何表示以及各种运算在计算机内部应该如何实现
什么是算法?
算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作
算法的特性
有穷性
一个算法必须总在执行有穷步之后结束并且每一步都可以在有穷时间内完成
算法必须是有穷的(用有限步骤解决某个特定的问题),而程序可以是无穷的(微信是程序,不是算法)
确定性
算法中每条指令必须有确切的含义,对于相同的输入只能得出相同的输出
可行性
算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现
输入
一个算法有0个或多个输入,这些输入取自于某个特定的对象的集合
输出
一个算法有1个或多个输出,这些输出是与输入有着某种特定关系的量
“好”算法的特质
设计算法时要尽量追求的目标
正确性
算法应该能够正确地解决求解问题
可读性
算法应具有良好的可读性,以帮助人们理解
健壮性
输入非法数据时,算法能适当地作出反应或进行处理,而不会产生莫名其妙的输出结果
高效率与低存储量需求
高效要求花的时间少,即时间复杂度低
低存储量要求不费内存,即空间复杂度低
算法效率的度量
如何评估算法时间开销?
算法的时间复杂度
时间复杂度小练习
程序运行时的内存需求
空间复杂度
函数递归调用带来的内存开销
相关阅读:
Hyperf微服务——五、JsonRpc远程调用
深度优先搜索(二)
猿创征文|瑞吉外卖——移动端_订单明细
Netty源码解析一——线程池模型之线程池NioEventLoopGroup
百度&飞桨&蜜度文本智能较对大赛经验分享(17/685)
Excel VBA 开发过程中遇到的一些问题,解决方案,持续更新
java垃圾回收
长列表优化:用 React 实现虚拟列表
企业电子招投标采购系统源码之电子招投标的组成
ArrayList 可以完全替代数组吗?
原文地址:https://blog.csdn.net/weixin_44043952/article/details/124504689
最新文章
攻防演习之三天拿下官网站群
数据安全治理学习——前期安全规划和安全管理体系建设
企业安全 | 企业内一次钓鱼演练准备过程
内网渗透测试 | Kerberos协议及其部分攻击手法
0day的产生 | 不懂代码的"代码审计"
安装scrcpy-client模块av模块异常,环境问题解决方案
leetcode hot100【LeetCode 279. 完全平方数】java实现
OpenWrt下安装Mosquitto
AnatoMask论文汇总
【AI日记】24.11.01 LangChain、openai api和github copilot
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
正则表达式工具
cron表达式工具
密码生成工具
京公网安备 11010502049817号