js 归并算法(递归和非递归)

怼烎@ 2023-02-19 07:27 101阅读 0赞

归并算法时间复杂度是:O(nlogn)

归并递归算法

function merge(left, right){
var result=[];
while(left.length>0 && right.length>0){
if(left[0] arr[middle]) { // 如果左边数组第一个元素比右边数组第一个元素大。
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 。
}
}

发表评论

表情:
评论列表 (有 0 条评论,101人围观)

还没有评论,来说两句吧...

相关阅读