首页 / 知识库 / 进大厂必备计算机基础 / 数据结构与算法

01 - 为什么要有这么多数据结构

在学具体的数组、链表、树之前,先想明白一个问题:为什么不能只用一种数据结构走天下? 想通了这个,你后面学每一种结构时,就不会死记硬背,而是能理解「它是为了解决什么才被发明出来的」。

数据结构 = 组织数据的方式

数据结构,就是「数据在计算机里怎么组织、怎么摆放」的方式。

同样一堆数据,摆放方式不同,做某些操作的效率会天差地别。举个生活里的例子——你有一大堆书,怎么放?

  • 随便堆成一摞:放书快(往上一扔就行),但找某本书要一本本翻,慢。
  • 按书名字母排好放书架:找书快(直接定位),但插一本新书要挪动后面一排,慢。
  • 按主题分类建个目录:找特定主题快,但维护目录有成本。

看,没有哪种摆法「样样都好」。每种组织方式都是在不同操作之间做取舍。 数据结构也一样。

核心:不同结构,擅长不同操作

我们对数据最常见的操作无非几种:

  • :加一个新数据
  • :删掉一个数据
  • :找到某个数据
  • :修改某个数据
  • 遍历:把所有数据挨个过一遍

关键在于:没有任何一种数据结构能让所有操作都最快。 一种结构往往是「某些操作快,另一些操作慢」。比如(先有个印象,后面章节细讲):

  • 数组:按位置读取超快,但中间插入/删除很慢。
  • 链表:中间插入/删除快,但按位置查找慢。
  • 哈希表:查找某个值快到「秒查」,但数据是无序的。
  • :查找、插入都还不错,还能保持有序。

所以「学这么多数据结构」的意义,不是让你记住一堆名词,而是:手里多几件趁手的工具,遇到不同的活儿能挑对的用。

选数据结构,本质是「预判你要频繁做什么操作」

选哪种数据结构,取决于你最在乎哪个操作快

  • 如果你要频繁「按值查找有没有」→ 优先想哈希表
  • 如果你要频繁「在两端增删」→ 想队列 / 栈
  • 如果你要频繁「保持有序还要能快速查找」→ 想
  • 如果你的数据是「谁和谁有关系」的网状 → 想

一句话:先问「我最常做什么操作、最怕什么操作慢」,再去挑那个正好扬长避短的数据结构。 这就是「选型思维」,也是这整篇教程想教给你的核心能力。

数据结构 vs 算法

顺便厘清两个总被放一起的词:

  • 数据结构:数据怎么组织存放(本教程的重点)。
  • 算法:在这些数据上怎么一步步操作来解决问题(比如怎么排序、怎么查找)。

两者关系密切:好的数据结构,能让算法又简单又快;选错了结构,再聪明的算法也跑不快。 这也是为什么我们主张:先把数据结构本身吃透。

小结

  • 数据结构 = 数据的组织摆放方式;摆法不同,各种操作的效率天差地别。
  • 常见操作是增、删、查、改、遍历;没有一种结构能让所有操作都最快,每种都是取舍。
  • 学多种数据结构,是为了手里多几件趁手工具,遇到不同的活挑对的用。
  • 选型的核心思维:先问「我最常做什么操作、最怕什么慢」,再挑扬长避短的结构。
  • 数据结构管「怎么存」,算法管「怎么操作」;结构选对了,算法才能又简单又快。

下一章 → 02 - 怎么衡量快慢:大 O 复杂度 | 回到 README 目录