`
- 浏览:
100161 次
- 性别:
- 来自:
北京
-
javascript版本:
- function merge(left, right){
- var result = [];
- while (left.length > 0 && right.length > 0){
- if (left[0] < right[0]){
- result.push(left.shift());//把最小的最先取出,放到结果集中
- } else {
- result.push(right.shift());
- }
- } return result.concat(left).concat(right);//剩下的就是合并,这样就排好序了
- }
- function mergeSort(array){
- if (array.length == 1) {
- return array;
- }
- var middle = Math.floor(array.length / 2),//求出中点
- left = array.slice(0, middle),//分割数组
- right = array.slice(middle);
- return merge(mergeSort(left), mergeSort(right));//递归合并与排序
- }
ruby版本:
- def merge(left, right)
- final = []
- until left.empty? or right.empty?
- final << ( left.first < right.first ? left.shift : right.shift
)
- end
- final + left + right
- end
- def mergeSort(array)
- return array if array.size < 2
- left = array.first(array.size/2)
- right = array.last(array.size - array.size/2)
- merge(mergeSort(left), mergeSort(right))
- end
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
全面的排序算法实现,包括插入排序、合并排序、堆排序、快速排序。 堆排序:HeapSort 讲解详见http://blog.csdn.net/fly_yr/article/details/8550701 插入排序:InSertion_Sort 讲解详见...
合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序的C语言实现,原创。
自然合并排序是对合并排序的非递归形式的一种改进,很好很有用
/************合并排序算法的实现******************/ int main() { int p,q,r; printf("合并排序算法的实现:\n"); printf("请输入p、q、r的值(输入格式1,12,13):"); scanf("%d,%d,%d",&p,&q,&r); printf("p=%...
c++实现的合并排序算法 用递归和非递归两种方式实现的
这是用c++编写的一个合并排序的程序……
这些代码是对算法导论上对排序部分的总结,实现了以下排序方法:插入排序,合并排序,堆排序,快速排序,计数排序,每种实现都有详细的注释和相应的测试程序,可查找http://blog.csdn.net/china8848<br>中对相关问题...
针对200000长度的数组,采用插入排序和合并排序,对比两种算法的时间复杂度
这是我写的一个合并排序 用c语言实现 的,
C语言实现的排序算法,包括快排和合并排序,测试通过
经典排序算法的合并排序算法的C语言实现,适合初学者
c++ 分治法合并排序 merge sort c语言 分治法合并排序 merge sort(将cout修改printf 加头文件include "stdio.h")
通过动态规划来实现快速排序和合并排序!使我们更能很好的应用于实际中!!
实现并验证合并排序算法; 实现并验证快速排序算法(参考习题5.2第7a题,P140); 用递归与分治的方法设计并实现寻找第k小元素算法
分治策略 合并排序 快速排序 代码 C语言 是自己写的程序,还请各位指教
C#写的合并排序
利用分治法的合并排序实现数组的排序,根据算法导论第二章编写
java语言实现合并排序
合并排序的递归调用和合并排序的非递归调用的对比,可以让人感受到选择递归调用可以提高工作作业效率,只要得到递归公式和递归出口就可以了,问题解决起来会很省力
自底向上合并排序算法 ,望对大家有帮助,谢谢!