关于数据结构,可以大致分为以下两类:
逻辑结构:抽象出来的数据模型。每一种逻辑结构都可以基于不同的物理结构进行存储。物理结构:数据在内存中的真实存储方式。在上面这四种结构的基础上,再进行组合排列,就可以表示整个宇宙了。
任何类型的数据,最终都需要存储在内存中。根据内存中存储的数据是否连续,可以分为两种存储方式:
顺序存储:每个逻辑上相邻的元素,在物理内存上也相邻。静态操作快,动态操作慢。链式存储:逻辑上相邻的元素,在物理内存上离散,通过指针相互关联。静态操作慢,动态操作快。静态操作:查找和修改元素。操作完成后数据整体大小不变。 动态操作:增删元素。操作完成后数据整体大小发生变化。
最常见的顺序存储的数据类型就是数组。数组中的多个元素在逻辑上和物理上都是相邻的,直接通过下标访问。
最基本的链式存储的数据类型是链表。链表中的每个元素,除了保存数据外,还保存指向下一个元素的指针。要访问某个位置的元素,必须从首元素开始顺着指针一个个找下去。
程序的本质 = 算法 + 数据结构
作为野生程序员,学过几种编程语言,但是每次想深入研究 Linux 和 MySQL 以及 Redis 等常用工具,都会有种无力感。业务代码可以敲的很溜,但是如果搞不懂底层原理,那始终只是一个码农,最多是熟手码农而已。
任何牛逼的项目,本质上都是对内存中数据的操纵。数据组织结构良好,才能方便基于各种算法对其进行操纵。而算法有很多,选择最佳方案可以成倍的提高效率。
转载于:https://www.cnblogs.com/kika/p/10851504.html
相关资源:微软等数据结构 算法面试100题全部答案集锦