摘要: 求第k小元素:采用特定分治策略 1. 问题 设L是n个元素的集合,从L中选取第k小的元素,其中1<=k<=n.这里的第k小元素是指,当L按从小到大排好序之后,排在第k个位置的元素。 2. 解析 对于这个算法而言,最关键的是需要找出m*这个数字,相较于一般分治策略而言,m*能够最大限度地避免最坏的情况 阅读全文
posted @ 2020-03-31 22:46 JayShao 阅读(103) 评论(0) 推荐(0)
摘要: 最近对问题 1. 问题 n个点在公共空间中,求出所有点对的距离最小值。 2. 解析 ① 对所有的点按照x坐标从小到大排序。根据下标进行分割,使得点集分为两个集合。 ② 递归的寻找两个集合中的最近点对。取两个集合最近点对中的最小值min(dis_left,dis_right)。 ③ 最近距离不一定存在 阅读全文
posted @ 2020-03-24 22:03 JayShao 阅读(124) 评论(0) 推荐(0)
摘要: 二分归并排序 1. 问题 归并排序是建立在归并操作上的一种有效的排序算法,该算法是分治法的一个应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。 2. 解析 二分归并排序的工作原理如下: 第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的 阅读全文
posted @ 2020-03-18 22:36 JayShao 阅读(198) 评论(0) 推荐(0)
摘要: 检索问题 1. 问题 检索是指从用户特定的信息需求出发,对特定的信息集合采用一定的方法、技术手段,根据一定的线索与规则从中找出相关信息。 检索问题是查找集合中是否存在需要查找的内容。 2. 解析 顺序检索是按元素的下标位置,按照顺序判断该数组是否存在需要查找的元素。因此只需要对整个数组遍历一遍即可。 阅读全文
posted @ 2020-03-10 21:50 JayShao 阅读(139) 评论(0) 推荐(0)
摘要: 最短路径 1. 问题 用于计算一个节点到其他所有节点的最短路径。 2. 解析 Floyd: 1.从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大。 2.对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比已知的路径更短。如果是 阅读全文
posted @ 2020-03-03 21:47 JayShao 阅读(138) 评论(0) 推荐(0)
摘要: 最小生成树 1. 问题 在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即),而 w(u, v) 代表此边的权重,若存在 T 为 E 的子集(即)且为无循环图,使得的 w(T) 最小,则此 T 为 G 的最小生成树。 2. 解析 1.Prim算法: 1). 阅读全文
posted @ 2020-02-29 11:09 JayShao 阅读(151) 评论(0) 推荐(0)
摘要: B题 题意: 给一棵树,找到三个顶点,使三个顶点两两之间路径的并集最大 输出: 三个顶点两两之间路径的并集的最大数量,以及这三个点的编号 解析: 用两次BFS可以求出树的直径的两个端点(假设为a,b),在这个过程中还能顺便求出一个端点到树上每一点的距离。 之后再用一次BFS求得另一个端点到树上每一点 阅读全文
posted @ 2020-02-06 10:17 JayShao 阅读(165) 评论(0) 推荐(0)