快速排序

2021-03-01 16:28

阅读:372

标签:base   div   spl   通过   cti   一个   二分查找   rgb   内容   

快排的实现利用了二分查找法;

二分法是通过与中间值进行比较,每次缩小一半的区域;

快速类似于二分法,每次都在数组中选择一个基数,每一轮结束后,比该基数小的都位于该基数的左边,比该基数大的位于右边。然后再分别在左边的数组里,里面选一个基点和基点值,右边选择基点和基点值,这里就是用递归。

function quickSort(arr) {
    if (arr.length){
        return arr;
    }
    var baseIndex= Math.floor(arr.length/2);//向下取整,选取基准点
    var base=arr.splice(baseIndex,1)[0];//取出基准点的值,
    // splice 通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
    // slice方法返回一个新的数组对象,不会更改原数组
//这里不能直接base=arr[baseIndex],因为base代表的每次都删除的那个数
    var left=[];
    var right=[];
    for (var i = 0;i){
    // 这里的length是变化的,因为splice会改变原数组。
        if (arr[i]base){
            left.push(arr[i]);//比基准点小的放在左边数组,
        }
    }else{
        right.push(arr[i]);//比基准点大的放在右边数组,
    }
    return quickSort(left).concat([base],quickSort(right));

 

快速排序

标签:base   div   spl   通过   cti   一个   二分查找   rgb   内容   

原文地址:https://www.cnblogs.com/jwenming/p/14435550.html


评论


亲,登录后才可以留言!