合并算法,指的是将两个已经排序的序列合并成一个序列的操作 操作步骤: 1. 建立一个数组C用来存放合并后的数 2. 从数组A和数组B的首端开始比较,将大的元素放入C中 3. 重复2操作,直至其中一个数组的元素被用完,则将另一个数组中剩余的元素拷贝到C中 比较复杂度:n㏒n 交换(赋值)复杂度:n㏒n...
分类:
编程语言 时间:
2015-02-09 21:32:56
阅读次数:
157
分治策略:在每层递归中应用如下三个步骤:分解:将问题划分为一些子问题(子问题的形式与原问题一样,只是规模更小)。解决:递归地求解子问题,当然,当子问题规模到你满意时就直接求解!合并:将子问题的解合并为原问题的解注: 有时会遇到需求解与原问题不完全一样的子问题,将其求解视为合并的一部分(出现此类情况可...
分类:
其他好文 时间:
2015-01-27 20:11:43
阅读次数:
255
五大算法之分治算法:当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相当复杂,使得直接求解法在时间上相当长,或者根本无法直接求出。对于这类问题,我们往往先把它分解成几个子问题,找到求出这几个子问题的解法后,再找到合适的方法,把它们组合成求整个问题的解法。如果这些子问题还较大,难以解决,可以再把它们分成几个更小的子问题,以此类推,直至可以直接求出解为止。这就是分治策略的基本思想。...
分类:
编程语言 时间:
2015-01-26 17:09:11
阅读次数:
330
一、什么是分治 有很多算法是递归的:为了解决一个给定的问题,算法要一次或多次递归调用其自身来解决的子问题。这些算法通常采用分治策略:将原问题划分为n个规模较小而结构与原问题相似的子问题;递归地解决这些子问题,然后再合并其结果,就得到原问题的解。二、分治算法的三个步骤 分治模式在每一层递归上都...
分类:
编程语言 时间:
2015-01-24 21:18:28
阅读次数:
296
算法思想:基本的思想为分治算法,也就是将一个问题分成多个更小的部分递归解决。具体到合并排序,就是将待排序序列分为小的序列,递归进行排序,然后合并。步骤:1、分解:将n个元素分成各含n/2个元素的子序列2、解决:用合并排序对两个子序列递归排序3、合并:合并两个已排序的子序列以得到排序结果在对子序列排序...
分类:
编程语言 时间:
2015-01-23 21:24:23
阅读次数:
225
快速排序是基于分治策略的一个排序算法。其基本思想是,对于输入的字数组a[p:r],按以下3个步骤进行排序:1、分解(divide):以a[p]为基准元素将a[p:r]划分成3段a[p:q-1],a[q],a[q+1:r],使得a[p:q-1]中任何元素小于等于a[q],a[q+1:r]中任何元素大于...
分类:
编程语言 时间:
2015-01-23 13:17:54
阅读次数:
229
归并排序算法是用分治策略实现对n个元素进行排序的算法。 其基本思想是:将待排序的元素分成大小大致相同的两个子集合,分别对2个子集合进行排序,最终将排序好的子集合合并成为所要求的排好序的集合。递归版本算法(不完全版本):1 public static void mergeSort(Compara...
分类:
编程语言 时间:
2015-01-22 15:13:14
阅读次数:
220
比较的算法有插入排序,堆排序,合并排序,快速排序和stooge排序,
先说一下比较结果
1,比较插入和stooge排序,stooge的表现如此之差,数组大小在2000时
InsertSort VS StoogeSort 's Running Time: 16ms:47672ms;
Terribly! Isn't It?
所以在后面的比较中,没有带s...
分类:
编程语言 时间:
2015-01-09 17:19:26
阅读次数:
250