![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
文章平均质量分 90
主要记录常用数据结构和算法
loongknown
凡是过往,皆为序章。
展开
-
寄存器分配:图着色算法
本文介绍了比较经典的图着色的寄存器分配算法,此外目前使用比较广的还有线性扫描算法、整数线性规划算法等。在编译器的中间表示中,一般会设定虚拟寄存器有无限多个(方便优化),而真实的物理寄存器是有限的,因而编译器后端在将中间表示翻译成目标指令集的时候会进行寄存器分配,也就是将无限的虚拟寄存器映射到有限的物理寄存器上。图着色算法首先要进行活跃分析,得到冲突图,然后通过对冲突图进行着色来解决寄存器分配问题。寄存器分配的问题就可以转换为冲突图图着色问题。图着色是给图的每个顶点进行着色,并且相连的顶点需要着不同的颜色。原创 2023-07-29 09:05:39 · 2914 阅读 · 0 评论 -
强连通分量(SCC, Strongly Connected Components)
强连通分量及其Tarjan算法原创 2023-05-27 08:10:11 · 7458 阅读 · 1 评论 -
二叉堆(Binary Heap)
二叉堆其实就是一个完全二叉树(完全二叉树的介绍见二叉树(Binary Tree):先序遍历、中序遍历、后序遍历和层次遍历),只不过用数组存储形式。这里特意保留arr[0]不用,这样可以方便地计算父亲和儿子节点的index。因此,arr[1]是二叉树的根节点。最大堆:每个节点的值都大于等于它的两个子节点。最小堆:每个节点的值都小于等于它的两个子节点。显然,最大堆最大的元素就是其堆顶arr[1],最小堆最小的元素就是其堆顶arr[1]。原创 2023-04-28 23:03:20 · 1385 阅读 · 1 评论 -
深入理解浮点数实现原理、范围和精度以及大数吃小数问题
浮点数实现原理:规格化、非规格化、NAN、INF、0,浮点数表示范围和精度,大数吃小数原理和解决方案。原创 2022-04-23 09:07:51 · 9373 阅读 · 8 评论 -
拓扑排序(Topological Sorting):Kahn 算法和 DFS 算法
拓扑排序算法 Topological sorting algorithmKahn 算法DFS 算法拓扑排序(TopoSort)有相当广泛的应用,比如依赖关系分析、图中是否有环、编译优化中的数据刘分析等。拓扑排序,就是任意一条边 u->v,节点 u 都先于节点 v 。显然,有向图中有环的话,就不存在拓扑排序,所以我们讲的拓扑排序是针对有向无环图(DAG)的。拓扑排序可能不是唯一的,如下图,ABDCEF 、ABDECF 和 ABCDEF 都是这个 DAG 的拓扑排序。上文 图的邻接矩阵、邻接原创 2022-04-16 09:22:14 · 3807 阅读 · 1 评论 -
图的邻接矩阵、邻接表存储和图的广度优先搜索(BFS)、深度优先搜索(DFS)
图的邻接矩阵和邻接表表示。广度优先搜索(BFS)、深度优先搜索(DFS)及 C++ 实现。原创 2022-04-10 14:31:01 · 7761 阅读 · 2 评论 -
二叉树(Binary Tree):先序遍历、中序遍历、后序遍历和层次遍历
二叉树 Binary Tree:先序遍历 Preorder Traversal、中序遍历 Inoreder Traversal、后序遍历 Postorder Traversal、层次遍历 Level Traversal根 Root:树顶部的顶点,记为r。路径 Path:树中的路径是连接一个顶点到另一个顶点的顶点和边的序列,顶点y到顶点v的路径记为y ∗→T v_y \ \underrightarrow{*}_T\ {_v}y&原创 2022-04-09 08:57:25 · 6359 阅读 · 0 评论 -
数组和链表 Array and Linked-List
1、数据结构概述2、数组和链表介绍原创 2022-03-19 08:03:24 · 2464 阅读 · 0 评论