定义
算法(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 码点。

- UTF-16 编码:固定2或4字节
- UTF-32 编码:固定4字节
posted @
2024-10-27 23:53
navyum
阅读(
60)
评论()
收藏
举报
//自己上传到博客园的js