递归分治
文章平均质量分 83
PG13okc
一个不会编程的菜鸟!
展开
-
贪心算法 --- 算法思想介绍
贪心算法 — 算法思想介绍一.贪心算法的基本概念贪心算法也称为优先策略顾名思义是“择优录取”,在某些方面的应用是非常成功的,也是我们设计算法时经常使用的一种策略。国外叫做Greedy method,意即见到好的就抓住不放。它并不一定对所有问题都成功,但是对某些问题特别简单、有效。在贪婪算法中采用逐步构造最优解的方法。在每个阶段,都作出一个看上去最优的决策(在一定的标准下)。决策一旦作出,就不可再更改。作出贪婪决策的依据称为贪婪准则( criterion)。顾名思义,贪心算法只是做出在当前看来是最原创 2021-11-28 07:00:00 · 1839 阅读 · 0 评论 -
递归分治 --- 例题5.线性时间选择
递归分治 — 例题5. 线性时间选择一.问题描述给定线性序列集中的n个元素和正整数k, 1≤ k≤ n, 求第k小元素的位置.二.解题思路该篇文章中我们讨论与排序问题类似的元素选择问题,元素选择问题的一般提法是:给定线性序集合中n个元素和一个整数k(1 <= k <= n),要求找出这n个元素中第k小的元素,即如果将这n个元素依其线性排列数时,排在第k个位置的元素即为要找的元素.①最直观的解题方法:先排序,然后找到第k小的元素即可.这样时间复杂度至少是: O(n), 平均: O(n原创 2021-11-28 00:00:00 · 1009 阅读 · 0 评论 -
递归分治 --- 例题4. 快速排序
递归分治 — 例题4. 快速排序一.问题描述给定一个数组,使用快速排序算法进行排序.二.解题思路熟悉的快排,曾经写过不知道多少遍.在此还扩展了随机选择支点的算法RandomizedQuickSort.快排的思想很简单:对于输入a[p: r],按以下三个步骤进行排序:分解:取a中的一个元素为支点(pivot) 将a[p: r]划分成3段: a[p: q-1], a[q], a[q+1: r], 使得 a[p:q-1]中任一元素<=a[q], a[q+1: r]中任一元素 >=a[原创 2021-11-27 21:00:00 · 291 阅读 · 1 评论 -
递归分治 --- 例题3.合并排序
递归分治 — 例题3.合并排序一.问题描述将n个元素排成非递减顺序二.解题思路若n为1,算法终止;否则,将n个待排元素分割成k(k=2)个大致相等子集合A,B,对每一个子集合分别递归排序再将排好序的子集归并为一个集合合并排序算法可递归地描述如下:template<class Type>void MergeSort(Type a[], int left, int right){ if(left < right) //至少有两个元素 { int i = (left原创 2021-11-27 20:15:00 · 925 阅读 · 0 评论 -
递归分治 --- 例题2.棋盘覆盖
递归分治 — 例题2.棋盘覆盖一.问题描述在一个2^k x 2k个方格组成的棋盘中,恰有一方格残缺.残缺方格的位置有2(2k)种。故对任何k≥0,残缺棋盘有2^(2k)种.在棋盘覆盖问题中,要求用L型骨牌覆盖残缺棋盘上的所有方格且任何2个L型,骨牌不得重叠覆盖.2^k x 2k的棋盘覆盖中,用到的骨牌数为(4k -1)/3.二.解题思路使用分治算法,可以设计解棋盘覆盖问题的一个简捷算法.当k>0时,将2^k x 2k棋盘分割为**4个2(k-1) x 2^(k-1)子棋盘**, 残缺方原创 2021-11-27 20:00:00 · 569 阅读 · 0 评论 -
递归分治 --- 例题1.全排列
递归分治 — 例题1.全排列一.问题描述设计一个递归算法生成n个元素{r1, r2, … , rn}的全排列.此题与力扣主站第46题 — 全排列相同,以及力扣主站第47题 — 全排列Ⅱ二.解题思路设R={r1,r2…,rn}是要进行排列的n个元素,Ri=R-{ri}.集合X中的元素的全排列记为Perm(X).(ri)Perm(X)表示在全排列X的每个排列前加上前缀ri得到的排列.R的全排列可归纳定义为如下:当n==1时,Perm®=®,其中r是集合R中唯一的元素.当n > 1时,P原创 2021-11-27 19:45:00 · 882 阅读 · 0 评论 -
递归分治 --- 算法思想介绍
递归分治 — 算法思想介绍一.递归分治的基本概念递归的概念:直接或间接的调用自身的算法称为递归算法.用函数自身给出定义的函数成为递归函数.分治法的思想:将一个难以直接解决的大问题分割成一些规模较小的相同问题,以便各个击破,即分而治之.如果原问题可分割成k个子问题, 1<k<=n, 且这些子问题都可解,并可利用这些子问题的解求出原问题的解,那么这种分治法就是可行的.有分治法产生的子问题往往是原问题的较小模式,这为使用递归技术提供了方便.在这种情况下,反复利用分治手段,可以使子问题与原问题原创 2021-11-27 15:33:43 · 799 阅读 · 0 评论