排序算法之--归并排序法
2020-12-13 16:24
标签:sort cheng length com bottom logs floor 位置 cat 参考文章: https://www.cnblogs.com/chengxiao/p/6194356.html https://zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略。 分治法将问题分(divide)成一些小的问题后求解,而治(conquer)的阶段则将分的阶段得到的各答案"集成"在一起,因此叫分而治之。 原理如下(假设序列共有{\displaystyle n}个元素): 排序算法之--归并排序法 标签:sort cheng length com bottom logs floor 位置 cat 原文地址:https://www.cnblogs.com/chentianwei/p/11619688.html归并排序法
基本思想:
实现归并排序的2种方法:
递归法(Top-down)
function merge(left, right){
var result = [];
//使用指针能提高速度。不使用shift方法,因为数组会重新分配指针,导致多花费时间。
while(left.length > 0 && right.length > 0){
if(left[0] ]){
result.push(left.shift());
}else{
result.push(right.shift());
}
}
return result.concat(left, right);
}
function mergeSort(arr){
if(arr.length return arr;
var middle = Math.floor(arr.length / 2);
var left = arr.slice(0, middle);
var right = arr.slice(middle);
return merge(mergeSort(left), mergeSort(right));
}
ruby的实现:
迭代法(Bottom-up)