一.总述 分治算法其实就是将一个大问题分解为若干个类型相同但是规模较小的子问题,使用递归的方式一直分解下去,然后将子问题的解合并得到原问题的解的策略。 二.经典的分治算法列举 二分搜索、大整数乘法、strassen矩阵乘法、棋盘覆盖、合并排序、快速排序、线性时间选择、最接近点对问题、循环赛日程表、汉 ...
分类:
编程语言 时间:
2021-02-17 14:56:19
阅读次数:
0
在line19对rand()%(r-p)改成rand()%(r-p+1)陷入了死循环,目前难以理解 ...
分类:
其他好文 时间:
2019-10-26 21:09:55
阅读次数:
111
找出的基准x至少比3(n-5)/10个元素大,因为在每一组中有2个元素小于本组的中位数,中位数处于1/2*[n/5-1]=(n-5)/10,即n/5个中位数中又有(n-5)/10个小于基准x。同理,基准x也至少比3(n-5)/10个元素小。而当n≥75时,3(n-5)/10≥n/4所以按此基准划分所 ...
分类:
编程语言 时间:
2019-09-13 22:42:19
阅读次数:
123
一、分治法 递归,找最大值最小值,整数相乘,归并排序,快速排序,线性时间选择,最近点对问题 二、动态规划 0-1背包问题 ,矩阵相乘问题,装配线调度问题,最长公共子序列,最优二分检索树,凸多边形最优三角剖分 三、贪心法 背包问题,活动选择问题,哈夫曼编码,最小生成树算法(Kruskal 和 Prim ...
分类:
编程语言 时间:
2019-08-12 23:38:19
阅读次数:
123
1 #include <ctime> 2 #include <iostream> 3 using namespace std; 4 5 template <class Type> 6 void Swap(Type &x,Type &y); 7 8 inline int Random(int x, i ...
分类:
编程语言 时间:
2019-02-26 01:12:20
阅读次数:
242
问题描述:给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k个元素。 算法描述: 算法实现: ...
分类:
其他好文 时间:
2018-10-15 14:21:40
阅读次数:
172
转自:http://blog.csdn.net/liufeng_king/article/details/8480430 线性时间选择问题:给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素,(这里给定的线性集是无序的)。 1、随机划分线性选择 线性时间选择随机划分法可 ...
分类:
其他好文 时间:
2017-11-28 10:27:59
阅读次数:
212
编程内功讲什么? 算法的作用: 分治算法: 分治算法 - 最大子数组问题: 股票问题 1,暴力求解 2,分治法 树(数据结构的一种 ): 什么是树的层次? 最大层是树的深度 什么是有序树和无序树? 树的错误案例: 1,树只有一个根节点 2,子树之间是不相交的 3,一个结点不能有两个父结点 树的存储结 ...
分类:
编程语言 时间:
2017-08-24 23:56:34
阅读次数:
424
【题目】 在n个元素的无序数组中选择第k(1<=k<=n)小元素。当k=1时,相当于找最小值。当k=n时,相当于找最大值。当k=n/2时,称中值。【要求】线性时间内完成,即O(n)。 【算法解析】 【核心代码】 【完整代码】 【时间复杂度】 ...
分类:
其他好文 时间:
2017-04-06 10:10:36
阅读次数:
247