1 #include "iostream" 2 #include "windows.h" 3 #define MAX 0x7fffffff 4 using namespace std; 5 6 void merge(int s,int q,int e,int A[]){ 7 int i,...
分类:
其他好文 时间:
2014-06-18 21:52:18
阅读次数:
234
这篇文章将讨论:1) 分治策略的思想和理论2) 几个分治策略的例子:合并排序,快速排序,折半查找,二叉遍历树及其相关特性。说明:这几个例子在前面都写过了,这里又拿出来,从算法设计的策略的角度把它们放在一起来比较,看看分治是如何实现滴。由于内容太多,我将再花一篇文章来写4个之前没有写过的分治算法:.....
分类:
其他好文 时间:
2014-06-18 21:06:23
阅读次数:
289
近几天研究了几个常用算法,插入,选择,合并,用测试程序生成几个大小不一样的输入文件,数量从几千万到上亿。刚开始测试时,把每次排序数只调到1000,生成的测试结果显示,插入排序,选择排序,合并排序依次性能下降。
转头一想,不对呀,这与书上不符。突然一想o(n2),貌似我的n比较小,于是把将每次供排.....
分类:
其他好文 时间:
2014-06-16 00:57:42
阅读次数:
187
快速排序(Quick Sort)也是一种交换排序,它在排序中采取了分治策略。
快速排序的主要思想是:
从待排序列中选取一元素作为轴值(也叫主元)。
将序列中的剩余元素以该轴值为基准,分为左右两部分。左部分元素不大于轴值,右部分元素不小于轴值。轴值最终位于两部分的分割处。
对左右两部分重复进行这样的分割,直至无可分割。...
分类:
其他好文 时间:
2014-06-15 15:28:14
阅读次数:
301
package chap04_Divide_And_Conquer;import static
org.junit.Assert.*;import java.util.Arrays;import org.junit.Test;/** * 矩阵相乘的算法 *
* @author xiaojintao....
分类:
其他好文 时间:
2014-06-09 16:12:24
阅读次数:
273
合并排序算法是用分治策略实现对N个元素进行排序的算法。其基本思想是:将待排序元素分成大小大致相同 的两个子集合,分别
对两个子集合进行排序,最终将排好序的子集合合并成所要求的排好序的集合。重点:1.分治的实现2.合并的实现分治,就是把整个集合的元素一直除2化分,一直化为到没有两个元素开始合并。图:分...
分类:
其他好文 时间:
2014-06-08 02:06:21
阅读次数:
289
/** * 获得连续子数组的最大和 * * @author dfeng * */ private
static long getMax(long a, long b) { return a > b ? a : b; } /** *
获得连续子数组的最大和 * * @param array ...
分类:
其他好文 时间:
2014-06-07 21:21:30
阅读次数:
241
/** * 最大子数组的暴力求解算法,复杂度为o(n2) * @param n * @return
*/ static MaxSubarray findMaxSubarraySlower(int[] n) { long tempSum = 0; int
left = 0; int right = 0...
分类:
其他好文 时间:
2014-06-07 21:07:50
阅读次数:
250
package chap04_Divide_And_Conquer;import static
org.junit.Assert.*;import java.util.Arrays;import org.junit.Test;/** * 算反导论第四章
4.1 最大子数组 * * @author ....
分类:
其他好文 时间:
2014-06-07 20:21:38
阅读次数:
212
原文:浅谈算法和数据结构: 四
快速排序上篇文章介绍了时间复杂度为O(nlgn)的合并排序,本篇文章介绍时间复杂度同样为O(nlgn)但是排序速度比合并排序更快的快速排序(Quick
Sort)。快速排序是20世纪科技领域的十大算法之一 ,他由C. A. R. Hoare于1960年提出的一种划分交...
分类:
其他好文 时间:
2014-06-07 20:15:43
阅读次数:
362