js实现排序算法之:归并排序

//用来融合两个有序数组
function mergeArray(arr1, arr2) {
    var arr = [],
        i = 0,
        j = 0,
        length1 = arr1.length,
        length2 = arr2.length;

    while (i <= length1 - 1 && j <= length2 - 1) {
        if (arr1[i] <= arr2[j]) {
            arr.push(arr1[i]);
            i++
        }
        else {
            arr.push(arr2[j]);
            j++
        }
    }

    //判断是谁先到底
    if (i === length1) {
        arr = arr.concat(arr2.slice(j))
    }
    else {
        arr = arr.concat(arr1.slice(i))
    }
    return arr
}

//归并排序
function mergeSort(arr) {
    var length = arr.length, middleIndex, left, right;
    if (length <= 1) {
        return arr
    }
    else {
        middleIndex = Math.floor(length / 2);
        left = arr.slice(0, middleIndex);
        right = arr.slice(middleIndex);
        return mergeArray(mergeSort(left), mergeSort(right))
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容