题解 | #排序#

排序

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
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利&nbsp;有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的&nbsp;真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务