• 快排 快速排序


    //入门:
    function quickSort(arr){
    
        if(arr.length<=1){return arr;}
        var pivotIndex=Math.floor(arr.length/2);
        var pivot=arr.splice(pivotIndex,1)[0];
        //定义
        var left=[];
        var right=[];
        //小的放left,大的放right
        for(var i=0;i<arr.length;i++){
            if(arr[i]<=pivot){
                left.push(arr[i]);
            }else{
                right.push(arr[i]);
            }
        }
        //递归
        //从小到大
        return quickSort(left).concat([pivot],quickSort(right)); 
       //大到小  
       //return quickSort(right).concat([pivot],quickSort(left)); 
    }
    //进阶
    const quickSort = (array) => { const sort = (arr, left = 0, right = arr.length - 1) => { if (left >= right) {//如果左边的索引大于等于右边的索引说明整理完毕 return } let i = left let j = right const baseVal = arr[j] // 取无序数组最后一个数为基准值 let a = [50,3,8,22,9,656,12,35,699,666,1111,35,100] i=0 j=12; i=1 j=12; i=2 j=12; i=3 j=12; i=4 j=12; i=5 j=12; a = [50,3,8,22,9,656,12,35,699,666,1111,35,656] baseVal =100; i=5 j=12 i=5 j=11 a = [50,3,8,22,9,35,12,35,699,666,1111,35,656] i=8 j=11 a = [50,3,8,22,9,35,12,35,699,666,1111,699,656] i=8 j=10 i=8 j=8 a = [50,3,8,22,9,35,12,35,100,666,1111,699,656] while (i < j) {//把所有比基准值小的数放在左边 比基准值大的数放在右边 while (i < j && arr[i] <= baseVal) { //找到一个比基准值大的数交换 i++ } // arr[i] > baseVal 或 i == j; 将较大的值放在右边如果没有比基准值大的数就是将自己赋值给自己(i 等于 j) arr[j] = arr[i] while (j > i && arr[j] >= baseVal) { //找到一个比基准值小的数交换 j-- } // arr[k] < baseVal 或 i == j; 将较小的值放在左边如果没有找到比基准值小的数就是将自己赋值给自己(i 等于 j) arr[i] = arr[j] } // i==j arr[j] = baseVal // 将基准值放至中央位置完成一次循环(这时候 j 等于 i ) // 0 7 sort(arr, left, j-1) // 将左边的无序数组重复上面的操作 // 9 12 sort(arr, j+1, right) // 将右边的无序数组重复上面的操作 } const newArr = array.concat() // 为了保证这个函数是纯函数拷贝一次数组 sort(newArr)

    快排 快速排序

  • 相关阅读:
    20155210 实验4 恶意代码分析
    20155210 网络攻防技术 实验三 免杀原理与实践
    20155210 Exp2 后门原理与实践
    20155210 实验一 逆向与Bof基础
    2017-2018-1 20155210实验四 外设驱动程序设计
    20155208徐子涵课程设计个人总结
    课题设计个人总结
    第四周学习进展
    20155208徐子涵《网络对抗》Exp9 Web安全基础
    第三周任务总结
  • 原文地址:https://www.cnblogs.com/tongbiao/p/10409909.html
Copyright © 2020-2023  润新知