Skip to content

Latest commit

 

History

History
95 lines (66 loc) · 3.84 KB

01-1.数据结构和算法的重要性.md

File metadata and controls

95 lines (66 loc) · 3.84 KB

Day01:数据结构和算法的重要性

你也许会觉得数据结构和算法,是脱离实际工作的知识!认为除了面试,这辈子也用不着。但事实真的是这样吗?

1. 什么是“数据结构”?

数据结构是一种抽象的封装。

说简单点就是,把一堆基本的数据,按照某种顺序给揉成一坨。

比如做一道菜需要放各种调料,如盐、味精,还有肉等,把它们混在一起就做成了一道菜。

如果我们抽象来展示:

struct 水煮肉片 { 
    牛肉 = []
    葱 = []
    姜 = []
    盐 = []
    花椒 = []
    植物油 = []
}

我们完全可以将上述这个结构体当成一个自定义的数据结构,将很多种不同的东西融合在一起;而计算机中的数据结构,则是把一些基本的数据类型,融合成一些复杂的数据结构,如map、队列。

2. 数据结构为什么重要?

哪怕只写过几行代码的人都会发现,编程基本上就是在跟数据打交道。计算机程序总是在接收数据、操作数据或返回数据。不管是求两数之和的小程序,还是管理公司的企业级软件,都运行在数据之上。

数据结构不只是用于组织数据,它还极大地影响着代码的运行速度。因为数据结构不同,程序的运行速度可能相差多个数量级。如果你写的程序要处理大量的数据,或者要让数千人同时使用,那么你采用何种数据结构,将决定它是能够运行,还是会因为不堪重负而崩溃。

一旦对各种数据结构有了深刻的理解,并明白它们对程序性能方面的影响,你就能写出快速而优雅的代码,从而使软件运行得快速且流畅。当然,你的编程技能也会更上一层楼。

视频学习

Data Structures Easy to Advanced Course 中:什么是数据结构?

3. 最基础的数据结构 - 数组

数组是最简单、也是使用最广泛的数据结构。栈、队列等其他数据结构均可由数组演变而来。下图是一个包含元素(1,2,3 和 4)的简单数组,数组长度为4。

每个数据元素都关联一个正数值,我们称之为索引,它表明数组中每个元素所在的位置。大部分语言将初始索引定义为零。

以下是数组的两种类型:

  • 一维数组(如上所示)
  • 多维数组(数组的数组)

数组的基本操作

  • Insert——在指定索引位置插入一个元素
  • Get——返回指定索引位置的元素
  • Delete——删除指定索引位置的元素
  • Size——得到数组所有元素的数量

面试中关于数组的常见问题

  • 寻找数组中第二小的元素
  • 找到数组中第一个不重复出现的整数
  • 合并两个有序数组
  • 重新排列数组中的正值和负值

现在,我们给出一系列的关于数组的学习视频:

小甲鱼数组学习-1

小甲鱼数组学习-2

小甲鱼数组学习-3


接下来,我们完成其他常见数据结构的学习:

数据结构 难度
链表
双向链表
队列
哈希表
优先队列
字典树
二叉查找树
AVL 树
红黑树
树状数组
并查集
布隆过滤器