随笔分类 -  递归分治

摘要:一.问题描述 给定线性序列集中的n个元素和正整数k, 1≤ k≤ n, 求第k小元素的位置. 二.解题思路 该篇文章中我们讨论与排序问题类似的元素选择问题,元素选择问题的一般提法是:给定线性序集合中n个元素和一个整数k(1 ⇐ k ⇐ n),要求找出这n个元素中第k小的元素,即如果将这n个元素依其线 阅读全文
posted @ 2021-12-21 15:25 PGokc 阅读(621) 评论(0) 推荐(0)
摘要:一.问题描述 给定一个数组,使用快速排序算法进行排序. 二.解题思路 熟悉的快排,曾经写过不知道多少遍.在此还扩展了随机选择支点的算法RandomizedQuickSort. 快排的思想很简单: 对于输入a[p: r],按以下三个步骤进行排序: 分解:取a中的一个元素为支点(pivot) 将a[p: 阅读全文
posted @ 2021-12-21 15:24 PGokc 阅读(146) 评论(0) 推荐(0)
摘要:一.问题描述 将n个元素排成非递减顺序 二.解题思路 若n为1,算法终止;否则,将n个待排元素分割成k(k=2)个大致相等子集合A,B,对每一个子集合分别递归排序 再将排好序的子集归并为一个集合 合并排序算法可递归地描述如下: template<class Type> void MergeSort( 阅读全文
posted @ 2021-12-21 15:21 PGokc 阅读(148) 评论(0) 推荐(0)
摘要:一.问题描述 在一个2k x 2k个方格组成的棋盘中,恰有一方格残缺.残缺方格的位置有2^(2k)种。故对任何k≥0,残缺棋盘有2^(2k)种. 在棋盘覆盖问题中,要求用L型骨牌覆盖残缺棋盘上的所有方格且任何2个L型,骨牌不得重叠覆盖. 2k x 2k的棋盘覆盖中,用到的骨牌数为(4^k -1)/3 阅读全文
posted @ 2021-12-21 15:20 PGokc 阅读(208) 评论(0) 推荐(0)
摘要:一.递归分治的基本概念 递归的概念:直接或间接的调用自身的算法称为递归算法.用函数自身给出定义的函数成为递归函数. 分治法的思想:将一个难以直接解决的大问题分割成一些规模较小的相同问题,以便各个击破,即分而治之. 如果原问题可分割成k个子问题, 1<k<=n, 且这些子问题都可解,并可利用这些子问题 阅读全文
posted @ 2021-12-21 15:11 PGokc 阅读(301) 评论(0) 推荐(0)