美文网首页
js实现排序算法之:归并排序

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

作者: txwslyf | 来源:发表于2017-08-24 16:27 被阅读0次
    //用来融合两个有序数组
    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))
        }
    }

    相关文章

      网友评论

          本文标题:js实现排序算法之:归并排序

          本文链接:https://www.haomeiwen.com/subject/hnyedxtx.html