一、综述
归并排序(Merge sort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide
and Conquer)的一个非常典型的应用。
算法描述
归并操作的过程如下:
申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列设定两个指针,最初位置分别为两个已经排序序列的起始位置比较两个...
分类:
编程语言 时间:
2015-08-08 16:40:13
阅读次数:
114
一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问...
分类:
编程语言 时间:
2015-08-05 23:58:04
阅读次数:
168
LeetCode 之 Pow(x, n),本文给出基于分治算法思想分析与二分实现表达式,最后,贴上C++详细源码实现。...
分类:
其他好文 时间:
2015-08-04 09:29:41
阅读次数:
166
慢慢积累 先来排序 快速排序使用分治法(Divide?and?conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。 算法步骤: 1?从数列中挑出一个元素,称为?“基准”(pivot), 2?重新排序数列,所有...
分类:
编程语言 时间:
2015-08-02 21:47:31
阅读次数:
259
快速排序使用啦分治法的思想,首先找到一个基准数,将数字分成两部分,一部分比基准数大,一部分比基准数小,然后可以递归实现。。。//快速排序#includeusing namespace std;void Sort(int *a,int left,int right);int main(){ int n...
分类:
编程语言 时间:
2015-08-02 21:25:12
阅读次数:
125
一、基本概念
动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。
二、基本思想与策略
基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通...
分类:
编程语言 时间:
2015-08-02 10:15:03
阅读次数:
206
【062-Unique Paths(唯一路径)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题 A robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below).
The robot can only move either down or...
分类:
编程语言 时间:
2015-08-01 07:45:10
阅读次数:
1868
分治算法将一个大的问题分成多个小问题,每个小问题都是大问题的组成部分,然后用点额外的处理就能得到最终答案。例如,归并排序就是将原问题分成两个次级的问题,每个次级排序问题数据是上一级问题的一半,最后使用额外O(n)的工作量进行合并。时间复杂度表达式如下: T(n) = 2T(n/2) + O(n) 下...
分类:
其他好文 时间:
2015-07-30 19:05:44
阅读次数:
121
平面上的分治法:求平面上两点之间的距离记住模板即可#include#include#include#includeusing namespace std;#define N 1000010struct point { double x; double y;}p1[N],pxSmall[N],pxLa...
分类:
其他好文 时间:
2015-07-28 17:59:15
阅读次数:
103
核心数学式:f(n) = F + f([0,n/2]) + f([n/2,n])思路:进行相应处理(打印结点、选好哨兵),将整个集合一分为二(一般是分为两部分)分别迭代处理两个半集合 例子:快排、二叉树遍历、最近点对、大整数乘法/* * 快排 * */#include template voi...
分类:
其他好文 时间:
2015-07-28 10:15:55
阅读次数:
107