zoukankan      html  css  js  c++  java
  • 快速排序

      程序员最不该缺的就是你的算法,算法是你的价值所在,你可以不会代码的具体的语法,但是必须得会算法。这个是我的见解。下面来写一一下传统的快速排序方法:(3步);

      1.找基准;

      2.分两边

      3.递归,重复上面的操作;

         代码: 

    function quickSort (arr) {
        if(arr.length<=1) return arr;
        var referIndex = Math.floor(arr.length/2);
        var referNumber = arr.splice(referIndex,1)[0];
        var left = [],right = [];
        for(var i =0;i<arr.length;i++) {
            if(arr[i]<=referNumber) {
                left.push(arr[i]);
            }else {
                right.push(arr[i]);
            }
        }
        return quickSort(left).concat([referNumber],quickSort(right));
    
    };
    var a =[2,4,6,7,9,10,35];
    quickSort(a);

    代码很简单就是这么几句话:

    来左代码的分析:

    1.判断arr的长度,如果小于等于1的就是他本身,不用排序,return 程序结束;

    2.找一个参考的index基本找中间,因为号理解,最好是中间的就是最中间的值,理想状态这样的,因为这套算法就是取一个数,一分为二(左边为小数组,右边为大数组);

    3.索引有了,我们根据这个索引取出这个值,arr.splice()这个方法就是,添加或者删除数组的中的数或者数组,返回的是修改后的数组.这里的返回的数组是一个数,所以取下标[0]

      splice的用法:

          

    4.声明两个数组,左边一个,右边一个;

    5.遍历,把参考值和数组中的值进行比较,小的放左边的数组,大的放右边的数组;

    6.然后,分下来的数组就是两个数组,然后递归,使用这个方法,在把这些数组再分,最后就是一个个数组,顺序大小排列好的数组

    7.最后用数组的concat的方法,把所有数组打散拼成数组;如图:

    注意: 递归容易堆栈溢出,问题出在基数的选取, 如果是  arr[parseInt(a.length/2)] 

    推荐:https://mp.weixin.qq.com/s?__biz=MzAxODE2MjM1MA==&mid=2651553119&idx=1&sn=e9ba55c895f16e269ca2c1e307a8e0a7&chksm=8025aa9eb75223880e438924c2a96675067f67c65839a8fe9e0121ee56191f3ad0bd00318c56&mpshare=1&scene=23&srcid=1204rPTjNA1cYurdEDe1caqU#rd

    每日一句:npm is the package manager for JavaScript. Find, share, and reuse packages of code from hundreds of thousands of developers — and assemble them in powerful new ways.(npm官网)

    翻译:NPM是JavaScript的软件包管理器。从成千上万的开发人员中查找、共享和重用代码包,并以强大的新方式组装它们。

  • 相关阅读:
    @Controller @RestController
    HOMEWORD2
    cudnn、cuda
    jupyter使用
    python学习——os模块
    python学习——导入模块、__name__
    python学习——文件
    python学习——函数、内置函数
    python学习——for循环的应用
    python学习——字典、集合、数据类型总结
  • 原文地址:https://www.cnblogs.com/adouwt/p/6411901.html
Copyright © 2011-2022 走看看