• js快排


    快排的思路:选定一个基准数,要使得基数的左边的数字全部小于它,右边的数字全部大于它。分别设i和j从左右开始寻找,从左边找到第一个比基数大的数,从右边找到第一个比基数小的数,然后交换这两个数。

    当i和j相遇时,交换基数和i。再以同样的方式处理两边的数组。注意:如果基数取的是a[0]那么一定是先从右边开始找,因为搜索的停止条件除了,找到比基数大或比基数小的数之外,还有i<j这个判断。因为最后基数a[0]要 

    和i交换位置,而a[0]是在数组的最左边,所以i==j时,这个位置上的数应该比a[0]小,如果先从左边开始,那么会造成这个数比a[0]大(仔细想想就明白了)

            const quickSort = (arr,s,e)=>{
                if(arr.length<=1) return 
                if(s>=e) return 
                let p = arr[s] 
                let i = s 
                let j = e 
                while(i!=j){
    
                    while(arr[j]>=p&&i<j){
                        j-- 
                    }
    
                    while(arr[i]<=p&&i<j){
                        i++ 
                    }
    
                    if(i<j){
                        let temp = arr[i] 
                        arr[i] = arr[j] 
                        arr[j] = temp 
                    }
                }
                arr[s] = arr[i] 
                arr[i] = p 
                quickSort(arr,s,i-1) 
                quickSort(arr,i+1,e) 
            }
            var arr = [6, 1, 2, 7, 9, 3, 4, 5, 10, 8]
            quickSort(arr,0,arr.length-1)
            console.log(arr)
  • 相关阅读:
    云时代架构读后感
    余额宝技术架构读后感
    shiyan
    11111
    编写hdfs文件遇到的问题
    123
    啦啦啦
    Hadoop安装
    js根据银行卡号进行判断属于哪个银行并返回银行卡类型
    git 使用
  • 原文地址:https://www.cnblogs.com/maskmtj/p/9394139.html
Copyright © 2020-2023  润新知