题解 | #排序#

排序

https://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896

简洁版本快排

/**
 * 快排
 */
function MySort( arr ) {
    // write code here
    quickSort(arr, 0, arr.length - 1)
    return arr
}
function quickSort(arr, l, r) {
    if (l >= r) return
    const pivot = arr[l]
    let i = l + 1
    let x = l
    let y = r
    while(i <= y) {
        if(arr[i] <= pivot) swap(arr, i++, x++)
        else swap(arr, i, y--)
    }
    quickSort(arr, l, x - 1)
    quickSort(arr, x + 1, r)
}
function swap(arr, i, j) {
    const temp = arr[i]
    arr[i] = arr[j]
    arr[j] = temp
}
module.exports = {
    MySort : MySort
};

归并排序


/**
 归并排序
 */
function MySort( arr ) {
    // write code here
    return mergeSort(arr, 0, arr.length - 1)
}
function mergeSort(arr, l, r) {
    if (l === r) return [arr[l]]
    const mid = l + ((r - l) >> 1)
    const left = mergeSort(arr, l, mid)
    const right = mergeSort(arr, mid + 1, r)
    return merge(left, right)
}
function merge(arr1, arr2) {
    const len1 = arr1.length
    const len2 = arr2.length
    const res = []
    let i = 0
    let j = 0
    while(i < len1 && j < len2) {
        if (arr1[i] <= arr2[j]) res.push(arr1[i++])
        else res.push(arr2[j++])
    }
    while(i < len1) res.push(arr1[i++])
    while(j < len2) res.push(arr2[j++])
    return res
}
module.exports = {
    MySort : MySort
};

全部评论

相关推荐

10-06 12:46
门头沟学院 Java
跨考小白:定时任务启动
点赞 评论 收藏
分享
10-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务