#include#include#include#include#include#include#include#includeusing namespace std;const int maxn = 100005;const long long INF = 0xfffffff;struct P.....
分类:
其他好文 时间:
2014-11-06 12:28:22
阅读次数:
155
快速排序和归并排序都是分治法的典型应用,主要区别在于,快速排序重在分,而归并排序重在治。 快速排序基于以下假设:已知x,序列中一半的数据大于x,另一半小于等于x,且小于等于x的数据在数组前一半,大于x的在后一半。这种分割不需要额外的存储空间,对两侧数据分别递归进行,最终数组排序即可完成。 实...
分类:
编程语言 时间:
2014-11-06 12:17:59
阅读次数:
181
看书、思考、写代码!
/***************************************
* copyright@hustyangju
* blog: http://blog.csdn.net/hustyangju
* 题目:分治法求数组最大连续子序列和
* 思路:分解成子问题+合并答案
* 时间复杂度:O(n lgn)
* 空间复杂度:O(1)
********...
分类:
编程语言 时间:
2014-11-05 23:17:53
阅读次数:
209
分治法在将大问题一步一步两两分,直到划分成可以解决的小问题时,求出这些小问题的解,然后再将小问题合成大问题的解,但是前提是这些小问题在求解是不受到其他小问题的解的影响的。...
分类:
其他好文 时间:
2014-11-05 17:12:01
阅读次数:
158
高速排序因为排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被採用,再加上高速排序思想----分治法也确实有用,因此非常多软件公司的笔试面试,包含像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也经常出现高速排序的身影。总的说来,要直接默写出高速排序...
分类:
编程语言 时间:
2014-11-05 14:31:13
阅读次数:
222
?比较著名的算法有 冒泡法,贪?心算法,递归法,迭代法,分治法,动态规划法,分?支限界 法,回溯法,A*寻路算法 等等。? ps:记录下,日后多多练习这些算法。
分类:
编程语言 时间:
2014-11-03 06:49:37
阅读次数:
208
/* 动态规划和分治法相似,都是通过组合子问题的解来求解原问题。 但分治法是将问题划分为互不相交的子问题,递归地求解子问题,再将它们的解组合起来,求出原问题的解。与之相反,动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子问题。在这种情况下,分治法会做很多不必要的工作。 动态规划...
分类:
其他好文 时间:
2014-11-03 01:15:38
阅读次数:
282
/*------------------ 求解最大子数组问题 --------------- 最大子数组,就是求解一个数组的所有元素的各种组合中,和最大的那个子数组。在这种情况下,如果元素值全部非负,那么最大子数组当然是所有元素。但是如果有负值的元素存在,那么久需要找到一个由数组中连续几个...
分类:
编程语言 时间:
2014-11-02 20:48:31
阅读次数:
324
动态规划、分治法和贪心法都是利用求解子问题,而后利用子问题求解更上层问题,最终获得全局解决方案的方法。但是三者的应用场景和性质却存在着极大的不同:1.分治法很容易与动态规划问题混淆,但两者却有着本质上的差异。分治法采用的是递归的思想来求解问题,两个分解的子问题独立求解,其之间无任何的重叠。而上一层问...
分类:
其他好文 时间:
2014-11-01 23:11:55
阅读次数:
275
归并(Merge)排序是将两个(或两个以上)有序表合并成一个新的有序表,
即把待排序序列分为若干个有序的子序列,再把有序的子序列合并为整体有序序列。
归并排序是建立在归并操作上的一种有效的排序算法。
该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。...
分类:
编程语言 时间:
2014-11-01 17:53:27
阅读次数:
243