00.定义
定义
算法(algorithm)
- 是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性:
- 问题是明确的,包含清晰的输入和输出定义。
- 具有可行性,能够在有限步骤、时间和内存空间下完成。
- 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。
数据结构(data structure)
- 是组织和存储数据的方式,涵盖数据内容、数据之间关系和数据操作方法,它具有以下设计目标:
- 空间占用尽量少,以节省计算机内存。
- 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。
- 提供简洁的数据表示和逻辑信息,以便算法高效运行。
关系
- 数据结构是算法的基石。数据结构为算法提供了结构化存储的数据,以及操作数据的方法。
- 算法是数据结构发挥作用的舞台。数据结构本身仅存储数据信息,结合算法才能解决特定问题。
- 算法通常可以基于不同的数据结构实现,但执行效率可能相差很大,选择合适的数据结构是关键。
算法(数据结构)设计的目标:
- 第一层:
找到问题解法
:算法需要在规定的输入范围内可靠地求得问题的正确解。 - 第二层:
寻求最优解法
:同一个问题可能存在多种解法,我们希望找到尽可能高效的算法。- 算法效率是衡量算法优劣的主要评价指标,它包括以下两个维度:
- 时间效率:算法运行时间的长短。
- 空间效率:算法占用内存空间的大小。
- 算法效率是衡量算法优劣的主要评价指标,它包括以下两个维度:
数据结构分类
- “逻辑结构”和“物理结构”两个维度进行分类。
逻辑结构:线性与非线性
- 逻辑结构揭示了数据元素之间的逻辑关:
- 在数组和链表中,数据按照一定顺序排列,体现了数据之间的线性关系;
- 在树中,数据从顶部向下按层次排列,表现出“祖先”与“后代”之间的派生关系;
- 图则由节点和边构成,反映了复杂的网络关系。
- 线性和非线性:
- 线性结构比较直观,指数据在逻辑关系上呈线性排列;
- 数组、链表、栈、队列、
哈希表
,元素之间是一对一的顺序关系
- 数组、链表、栈、队列、
- 非线性结构则相反,呈非线性排列。
- 树、堆、图、
哈希表
- 树、堆、图、
- 线性结构比较直观,指数据在逻辑关系上呈线性排列;
物理结构:连续与分散
- 物理结构反映了数据在计算机内存中的存储方式,物理结构从底层决定了数据的访问、更新、增删等操作方法,两种物理结构在时间效率和空间效率方面呈现出互补的特点
- 连续空间存储(数组)
- 分散空间存储(链表)
所有数据结构都是基于数组、链表或二者
的组合实现的- 基于数组可实现:栈、队列、哈希表、树、堆、图、矩阵、张量(维度>=3的数组)等。
- 基于链表可实现:栈、队列、哈希表、树、堆、图等。
基本数据类型
- 基本数据类型是
CPU 可以直接进行运算
的类型,在算法中直接被使用:- 整数类型 byte、short、int、long 。
- 浮点数类型 float、double ,用于表示小数。
- 字符类型 char ,用于表示各种语言的字母、标点符号甚至表情符号等。
- 布尔类型 bool ,用于表示“是”与“否”判断。
- 基本数据类型
以二进制
的形式存储在计算机中 #### 与数据结构的关系: 基本数据类型提供了数据的“内容类型”,而数据结构提供了数据的“组织方式
数字编码:
- 原码
- 反码
- 补码
字符编码:
- ASCII 字符集
- GBK 字符集
- Unicode 字符集
- 将世界范围内的所有语言和符号都收录其中
- Unicode
是一种通用字符集,本质上是给每个字符分配一个编号(称为“码点”),但它
并没有规定如何存储这些字符码点
- UTF-8 编码:
- 定义:一种 Unicode 编码方法,它是一种可变长度的编码,1~4字节
- 编码规则:
- 对于长度为 1
字节的字符,将
最高位
设置为0
,其余7位
设置为 Unicode 码点 - 对于长度为 n
字节的字符(其中n>1),将
首个字节
的高n位
都设置为1
,第n+1
位设置为0
;从第二个字节
开始,将每个字节的高2位
都设置为10
;其余所有位用于填充字符的 Unicode 码点。
- 对于长度为 1
字节的字符,将
- UTF-16 编码:固定2或4字节
- UTF-32 编码:固定4字节
- UTF-8 编码:
本文作者:navyum
本文链接:https://www.cnblogs.com/navyum/p/18509354
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步