01 2024 档案
摘要:一. 归并排序 【非常重要,必须手写出来,还必须理解,必须能快速手写出来】 1. 定义 它的基本思想是将待排序数组分成若干个子数组。然后将相邻的子数组归并成一个有序数组。最后再将这些有序数组归并(merge)成一个整体有序的数组。 2. 流程 步骤一:分解(Divide):归并排序使用递归算法来实现
阅读全文
摘要:一. 认识排序算法 1. 排序算法的定义 在计算机科学与数学中,一个排序算法(英语:Sorting algorithm)是一种能将一串资料依照特定排序方式排列的算法。 2. 排序算法的分类标准 计算的时间复杂度:使用大O表示法,也可以实际测试消耗的时间; 内存使用量(甚至是其他电脑资源):比如外部排
阅读全文
摘要:一. 红黑树简介 1. 背景 红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构。 它在1972年由鲁道夫·贝尔发明,被称为“对称二叉B树”,它现代的名字源于Leo J. Guibas和罗伯特·塞奇威克于1978年写的一篇论文。 2. 性质 除了符
阅读全文
摘要:一. 平衡树详解 1. 什么是平衡树? 平衡树(Balanced Tree)是一种特殊的二叉搜索树: 其目的是通过一些特殊的技巧来维护树的高度平衡; 从而保证树的搜索、插入、删除等操作的时间复杂度都较低; 2. 为什么需要平衡树? 如果一棵树退化成链状结构,那么搜索、插入、删除等操作的时间复杂度就会
阅读全文
摘要:一. 双端队列 1. 回顾 默认的队列是先进先出的, 即只允许在front前端出队,在near后端入队 2. 什么是双端队列? 允许在队列的两端进行出队 和 入队 3. 实操 继承之前的队列MyQueue,然后新增addFront、removeBack两个方法即可 PS: 双端队列了解即可,实用性不
阅读全文
摘要:一. 堆简介 1. 什么是堆结构? 堆的本质是一种特殊的树形数据结构,使用完全二叉树来实现,平时使用的基本都是二叉堆 二叉堆用树形结构表示出来是一颗完全二叉树,通常在实现的时候我们底层会使用数组来实现。 二叉堆又可以划分为最大堆和最小堆。 (1) 最小堆:堆中每一个节点都小于等于(<=)它的子节点;
阅读全文
摘要:一. 循环链表简介 1. 什么是循环链表? 在普通链表的基础上,最后一个节点的下一个节点不再是 null,而是指向链表的第一个节点。 这样形成了一个环,使得链表能够被无限遍历。 这样,我们就可以在单向循环链表中从任意一个节点出发,不断地遍历下一个节点,直到回到起点。 二. 单项链表改造 1. 目的
阅读全文