哈希表(Hash Table)
- 计数排序中的“桶”,
队列(Queue)
可以理解为数据先进先出的方式。
数组中的
Array.push()
方法将数据推入至数组末尾(先进),Array.shift()
方法将数组的第一个数据取出(先出),这就属于队列操作。现实生活中的排队。
栈(Stack)
可以理解为数据先进后出的方式。
数组中的
Array.push()
方法将数据推入至数组末尾(先进),Array.pop()
方法将数组的末一个数据弹出(后出),这就属于栈操作。现实生活中拆墙。
链表(linked List)
数组由于其连续性而使得无法直接删除中间的某项,而链表可以。
链表可以用哈希实现,例如 JS 中的多层嵌套的对象数据。
链表中 head 和 node 的概念:head 指的就是链表中的第一个数据,其余的就是 node(包括 head 中包含的数据)。
树(Tree)
层级结构、DOM结构等都属于树形结构。
概念包含:层数(数据分层所在的不同位置)、深度(树形结构有多少层)、节点个数(数据节点的数量)。
二叉树:每层数据分支最多不超过两个的树形结构,两个分叉分别用“左子树”和“右子树”表示。
满二叉树:每一层数据都是两个的二叉树。
完全二叉树;除最后一层外,其余层都是满的,并且最后一层或是满的,或是只在右边缺少连续若干节点的二叉树。
以上两种二叉树都能用数组实现。
其他树可以用哈希(对象)实现。
其他树例如:B 树,红黑树、AVL 树等。
堆(Heap)
堆(二叉堆)可以视为一颗完全二叉树。
二叉堆分为最大堆和最小堆。
利用二叉树特性可以实现堆排序。
堆排序的速度与快排相同。