js 归并算法(递归和非递归)
归并算法时间复杂度是:O(nlogn)
归并递归算法
function merge(left, right){
var result=[];
while(left.length>0 && right.length>0){
if(left[0]
temp[left + middle - leftEnd -1] = arr[middle++]; // 将右边数组最小的放入有序数组 temp(初始值为空)。
} else {
temp[left + middle - leftEnd -1] = arr[left++]; // 将左边数组最小的放入有序数组 temp(初始值为空)。
}
}
while(left > leftEnd && middle < right){ // 如果左边数组放完了,右边数组还有元素。
temp[left + middle - leftEnd -1] = arr[middle++]; // 那么依次将右边数组剩余的元素放入 temp 。
}
while(left <= leftEnd && middle >= right){ // 如果右边数组放完了,左边数组还有元素
temp[left + middle - leftEnd -1] = arr[left++]; // 那么依次将左边数组剩余的元素放入 temp 。
}
}
还没有评论,来说两句吧...