如果说在软件应用层的数据库类型有:SQL、MongoDB、Excel ...
那么在编程语言层的数据库就应该是各种数据结构(一个类比),只不过这些数据结构不会把数据存储到硬盘,只存储在内存而已。
计算机的各种数据结构,如数组、链表、字典......等,本质上都是通过操作底层硬件资源比如内存来实现的。它们通过不同的组织方式和算法,使得数据的存储和处理更加高效,以适应不同的应用场景和需求。
虽然已经存在的数据结构类型和种类很多,但他们的基础共性都是一样的,都必然的存在:
- 增
- 删
- 改
- 查
不同的数据结构的差异,是根据不同的应用场景和需求来改变它的内部组织方式和算法,下面我将逐一介绍主流的数据结构的特点和示例图。
Why is it important?
数据结构不只是用于组织数据,还会极大的影响代码运行速度。因为数据结构的不同,程序的运行速度会相差几个数量级。 如果你写的程序要处理大量的数据,或者要让成千上万的人同时使用,那么你采用何种数据结构,将决定它是能够运行,还是会因为不堪重负而崩溃。
一旦对各种数据结构有了深刻的理解,并明白它们对程序性能方面的影响,你就能写出快速而优雅的代码,从而使软件运行得快速且流畅。当然,你的编程技能也会更上一层楼。
————《秒懂算法:用常识解读数据结构》引自 第 1 章 数据结构为何重要
检验算法程序的好坏标准
https://www.cnblogs.com/mysticbinary/p/17947780
线性表
如果要对众多的数据结构进行分门别类,那么可以大致划分为线性表,非线性表两大类。
数组
Hash
Hash working principle
https://www.cnblogs.com/mysticbinary/p/17727764.html
Map
Map的特性(有序和无序)讨论
https://www.cnblogs.com/mysticbinary/p/17914324.html
链表
队列
堆栈
Recursion Function 递归和栈的笔记
https://www.cnblogs.com/mysticbinary/p/17945412
堆、队列数据结构 Primary
https://www.cnblogs.com/mysticbinary/p/17800140.html
非线性表
树
二叉树 Binary tree
https://www.cnblogs.com/mysticbinary/p/17952793
Trie Tree
https://www.cnblogs.com/mysticbinary/p/18001141
图
Some thoughts about Graph
https://www.cnblogs.com/mysticbinary/p/17952853
图结构 Graph primary
https://www.cnblogs.com/mysticbinary/p/18112092
图论之最短距离 Dijkstra算法入门
https://www.cnblogs.com/mysticbinary/p/17948673