引言
约 807 字大约 3 分钟
啊,多么美妙(复杂)的数据结构啊!
悄悄告诉你
括号里的话才是我想说的
我们对于数据结构的认识就是复杂,难,不好思考。但是日常生活中却遍布着数据结构的思想。(只是需要一双善于观察的眼睛👀)
我们在排队等待“叫号”时,不就是一个队列➡️吗?
我们存在不同人的QQ列表里,不就是一个图👤吗?
我们打牌时情不自禁地将牌从小到大的排序,不就是选择排序吗?
........
可以说生活中的例子是数不胜数,所以将理论知识和现实生活中的事物做一个映射,不就变得容易起来了吗?
什么是数据结构
在王道书中定义的是:相互之间存在一种或多种特定关系的数据元素的集合。其包含“逻辑结构”、“物理结构”、“数据的运算”。
一个想法是不是总是先在脑海中出现才会实践到现实中。上述的三种组成也是这样,逻辑结构就是事先在脑海中出现的,我们可以使用物理结构去实现它,而运算就是我们实现它的目的。
准确的来讲:
- 逻辑结构是数据元素中间存在的关系,这个关系可以是线性的,也可以是非线性的。
- 物理结构是具体在计算机上实现的方式,存在顺序存储、链式存储、散列存储等等。
- 数据的运算是对数据的操作,怎样操作,操作的结果又是什么,常见的就是插入、删除、查找、更新。
数据结构的不同实现方式就是“权衡利弊”的艺术。对于数组和链表而言,前者追求读取的速度,后者追求插入、删除的方便。
什么是算法
常常将算法和数据结构联想在一起,甚至以为这两者是相同的东西。实际上并不是的,它们之间虽然有着千丝万缕的联系,但却并不是相同的东西。
首先我们需要知道算法的定义:是对特定问题求解步骤的一种描述,是指令的有限序列。
并且算法还具有以下特性:
- 有穷性:得到最终结果的代价是有具体值的。
- 可行性:操作过程中的所有步骤都能在有限次执行后成功。
- 确定性:在相同的输入条件下必然是相同的输出。
由此可见,算法是需要数据结构的支撑的,数据结构为算法提供结构化的数据,算法又为数据结构注入强大的生命力。就像在生活中的炒菜:蔬菜,肉类为我们提供材料,需要我们按照放油、放肉、放菜、起锅。才能做出一道香气喷喷的菜肴。
算法和数据结构是相互交织,紧密相连的。
解释
本文中出现的[ ],只要不是特殊说明都表示向下取整。