算法思想:基本的思想为分治算法,也就是将一个问题分成多个更小的部分递归解决。具体到合并排序,就是将待排序序列分为小的序列,递归进行排序,然后合并。步骤:1、分解:将n个元素分成各含n/2个元素的子序列2、解决:用合并排序对两个子序列递归排序3、合并:合并两个已排序的子序列以得到排序结果在对子序列排序...
分类:
编程语言 时间:
2015-01-23 21:24:23
阅读次数:
225
比较的算法有插入排序,堆排序,合并排序,快速排序和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
$a = array(1,5,12,16);$b = array(2,3,15,19,25);$c = array(); $ak = $bk = 0;$countA = count($a); $countB = count($b);$countAB = $countA + $countB;for($...
分类:
编程语言 时间:
2015-01-08 17:01:45
阅读次数:
269
1 #include 2 #include 3 using namespace std; 4 long long ans; 5 void merge(int *a,int le,int mid,int rt){ 6 int *sort_data=(int *)malloc(sizeof(i...
分类:
编程语言 时间:
2014-12-31 18:18:35
阅读次数:
178
经典排序算法 - 归并排序Merge sort
原理,把原始数组分成若干子数组,对每一个子数组进行排序,
继续把子数组与子数组合并,合并后仍然有序,直到全部合并完,形成有序的数组
举例
无序数组[6 2 4 1 5 9]
先看一下每个步骤下的状态,完了再看合并细节
第一步 [6 2 4 1 5 9]原始状态
第二步 [2 6] [1 4] [5 9]两两合并排序,排序细节后边介绍
...
分类:
编程语言 时间:
2014-12-16 13:34:18
阅读次数:
145
经典排序算法 - Strand Sort
Strand sort是思路是这样的,它首先需要一个空的数组用来存放最终的输出结果,给它取个名字叫"有序数组"
然后每次遍历待排数组,得到一个"子有序数组",然后将"子有序数组"与"有序数组"合并排序
重复上述操作直到待排数组为空结束
看例子吧
待排数组[ 6 2 4 1 5 9 ]
第一趟遍历得到"子有序数组"[ 6 9],并将其归并排...
分类:
编程语言 时间:
2014-12-16 13:31:52
阅读次数:
256
题目:请给出一个时间复杂度为nlogn的算法,使之能够在给定一个由n个整数的构成的整合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。算法思想:1.先运用合并排序进行排序 O(nlgn),2.然后运用二分查找法寻找y,y = x - a[i],算法的时间复杂度小于nlogn,所以总的时...
分类:
编程语言 时间:
2014-12-13 19:23:22
阅读次数:
279
原文: 一步一步写算法(之合并排序) 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面一篇博客提到的快速排序是排序算法中的一种经典算法。和快速排序一样,合并排序是另外一种经常使用的排序算法。那么合并排序算法有什么不同呢?关键之处就体现在这个...
分类:
编程语言 时间:
2014-12-11 10:01:58
阅读次数:
237