「算法」快速排序

阅读 20

2022-01-08

/**
 * 快速排序
 * @param li
 * @param left
 * @param right
 */
var quick_sort= function(li,left,right){
    if(left < right){
        var mid = partition(li,left,right)
        quick_sort(li,left,mid - 1)
        quick_sort(li,mid+1,right)
    }
}

/**
 * 在left到right区间遍历li,使li[left]元素归位
 * @param li
 * @param left
 * @param right
 * @returns {*}
 */
var partition = function(li,left,right){
    var tmp = li[left]
    while(left < right){
        while(left<right && li[right]>=tmp){
            right -=1 //向左移动
        }
        li[left] = li[right]
        while(left < right && li[left]<=tmp){
            left +=1 //向右移动
        }
        li[right] = li[left]
    }
    // tmp左边的值都比它小,tmp右边的值都比它大
    li[left] = tmp
    return left
}

学习资料:https://www.bilibili.com/video/BV1uA411N7c5?p=17

精彩评论(0)

0 0 举报