一种高效的存图方式——数组前向星
此数据结构的正确名字为前向星,为了与链式前向星区别,本文中将其称为数组前向星。
数组前向星是一个特殊的边集数组。将边按照起点排序,那么每个点的所有出边都存储在一个区间中,记下区间的范围即可。排序方式使用计数排序,时间复杂度为线性。
其同时具备 vector 和链式前向星的优点,既能保证遍历时内存访问连续,又不需要动态分配内存。
此数据结构的正确名字为前向星,为了与链式前向星区别,本文中将其称为数组前向星。
数组前向星是一个特殊的边集数组。将边按照起点排序,那么每个点的所有出边都存储在一个区间中,记下区间的范围即可。排序方式使用计数排序,时间复杂度为线性。
其同时具备 vector 和链式前向星的优点,既能保证遍历时内存访问连续,又不需要动态分配内存。
以下代码中,mul1
是行向量乘矩阵,mul2
是矩阵乘列向量。
可以看出,两段代码的内存访问都是连续的,那为什么 mul2
会比 mul1
慢 3 倍?
1 | using Vector = int[MAXN]; |
放 弃 人