中老年回炉计划

中年回炉计划

列出这个计划的原因是打算系统性的完善总结一下自己的知识体系。

1.算法

1.DP

2.搜索

3.排序

3.1堆排序

介绍

所谓的堆就是用数组实现的完全二叉树,根节点为数据元素0,左右子节点为 2 * i + 1, 2 * i + 2;堆要满足条件很简单,大顶堆就是堆内每个节点元素大于两个子节点,小顶堆就是堆内每个节点小于两个子节点。所以堆排,或者基于堆实现相关的有序操作的话,一般分为下面几种操作:
1.堆的初始化
2.堆元素更新后堆的调整
这里先说堆内单元素的调整,因为对的初始化就是按一定顺序来调整堆内的每个元素。
针对单一节点的调整,如果为大堆的话,既判断当前节点是否大于两个子节点,否则,交换两个子节点中更大的那个。父节点与子节点交换后,原来子节点的位置也要再次进行判断是否要交换,直到满足条件。
初始化的话就更好理解了,只要从后往前去调整堆元素,那么调整到最前面就是一个完全符合堆条件的堆了。

例题

这里我找了一道可以结合堆来实现的题目,mergeK个有序链表,可以构建一个size为K的小顶堆。构建完堆后,取堆顶元素合并成链表,堆顶链表节点后移一位后,更新堆。
https://leetcode-cn.com/problems/merge-k-sorted-lists/

4.二分

5.文件读取

2.数据结构

1.1 链表

1.2 树

1.3 图

1.4 线段树

1.5 tire树

3.操作系统

3.1 进程

3.1.1 fork and copy on write

3.2 线程

3.3 LRU

4.网络

5.数据库

6.缓存

7.安全

8.java

9.c++