• js中实现快速排序


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

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

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

    function quickSort(arr) {
        if (arr.length<=1){
            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<arr.length;i++){
        // 这里的length是变化的,因为splice会改变原数组。
            if (arr[i]<base){
                left.push(arr[i]);//比基准点小的放在左边数组,
            }
        }else{
            right.push(arr[i]);//比基准点大的放在右边数组,
        }
        return quickSort(left).concat([base],quickSort(right));
  • 相关阅读:
    golang基础之第一个go程序
    golang基础之工程结构
    golang基础之初识
    Prometheus神器之监控K8s集群
    Kubernetes使用GlusterFS实现数据持久化
    Go使用Makefile构建
    快排的2种分区图解
    密钥交换之DH算法
    go mod使用
    socket常见选项之SO_REUSEADDR,SO_REUSEPORT
  • 原文地址:https://www.cnblogs.com/jwenming/p/14435550.html
Copyright © 2020-2023  润新知