function merge(array, p, q, r){
var lArray = [], rArray = [];
for(var i = p; i <= q; i++ ){
lArray.push(array[i]);
}
for(var j = q+1; j <= r; j++){
rArray.push(array[j]);
}
var m = 0, n = 0;
for(var k = p; lArray[m] != null && rArray[n] != null; k++){
if(lArray[m] > rArray[n]){
array[p++] = rArray[n++];
}else{
array[p++] = lArray[m++];
}
}
if(lArray[m] == null){
while(rArray[n]){
array[p++] = rArray[n++];
}
}
if(rArray[n] == null){
while(lArray[m]){
array[p++] = lArray[m++];
}
}
}
function mergeSort(A, p, r) {
if(p < r){
var middle = Math.floor((p+r)/2);
mergeSort(A, p, middle);
mergeSort(A, middle+1, r);
merge(A, p, middle, r);
}
}
var array = [3, 7, 1, 19, 5, 8, 2];
mergeSort(array, 0, array.length);
console.log(array);
merge sort
最新推荐文章于 2020-02-09 19:16:13 发布