图
# 图的存储结构: AM: Adjacent Matrix 邻接矩阵 AL: Adjacent List 邻接表 RAL: Reverse Adjacent List 逆邻接表 TL: Triple List 三元组顺序表 (往往是行逻辑链接的,性能更好) CL: Cross List 十字链表 # 图按存储结构分为: AMGraph: Adjacent Matrix Graph ALGraph: Adjacent List Graph TLGraph: Triple List Graph RALGraph: Reverse Adjacent List Graph CLGraph:...
more...哈希表
# 哈希表 / 散列表 应用哈希函数,由记录的关键字确定记录在表中的地址,并将记录放入此地址,这样构成的表叫哈希表 # 哈希查找 / 散列查找 利用哈希函数进行查找的过程叫哈希查找 # 哈希映射函数 / 散列函数 在记录的关键字与记录的存储地址之间建立的一种对应关系叫哈希函数 # 原始 hash 函数 简单一点的 hash 算法就是直接取模 (除留余数法)。 高级一点的 hash 算法会模乘以一个大素数来将源数据的分布规律变得不那么显著,也就是说,不管输入的是一串分布很紧凑的数字序列还是很稀疏的数字序列,生成的结果都是非常分散的数字序列。 linux 内核代码里面的这个 hash...
more...堆排序
区分:堆排序的堆不是堆栈的堆 # 原理 堆排序可以视为一种聪明的选择排序。 堆排序适合数组这样的数据结构。 选择排序需要不断在未排序部分找最大 / 小值然后放在已排序部分后面,堆排序只是将 “找最值” 的部分用 “调整堆” 代替,调整好的堆的堆顶就是我们想要的最值。 堆排序基于二叉树结构,堆是一种按一定规律存储数据的二叉树。利用堆最值位于堆顶的特点,不断将堆顶的最值和堆最后一个元素交换(堆最后一个元素后面都是已排序部分),然后重新调整未排序部分使其再变回一个堆。 # 最大堆 / 小根堆 / 小顶堆 最大值在根节点 / 堆顶 结点的键值都小于等于其父结点的键值 排降序建最大堆 # 最小堆...
more...