zoukankan      html  css  js  c++  java
  • 排序算法

    快速排序

      思想:

        1、找到一个基准点

          2、建立两个数据,分别存放左边和右边的数组

        3、利用递归的原理进行比较

      arr = [1,6,3,4,5]

      步骤 :  1,6,3,4,5

                 136,4,5

                 1,3,46,5

                 1,3,4,5,6

        <script type="text/javascript">
            var arr = [1,6,3,4,5];
            alert(quickSort(arr));
    
            function quickSort(arr) {
    
                if (arr.length<=1) return arr;
    
                var middleIndex = Math.floor(arr.length/2);
                var middleNum = arr.splice(middleIndex,1);
                var left = [];
                var right = [];
    
                
                
    
    
                for (var i=0,len=arr.length;i<len;i++) {
                    if (arr[i]<middleNum) {
                        left.push(arr[i]);
                    } else {
                        right.push(arr[i]);
                    }
                }
                return quickSort(left).concat([middleNum],quickSort(right));
    
            }
        </script>

    注意:

      1、if (arr.length<=1) return arr;  必须在arr.splice(middleIndex,1)前面,如果在后面会有问题,执行arr.splice(middleIndex,1)会影响arr的值,再返回arr值不对。

          2、if (arr.length<=1) return arr;必须是<=,如果改成==,会有问题,因为有可能在排序的时候,出现left或者right为空数组的情况(见:步骤3,这时left为空数组),空数组长度0,这时判断不成立,程序会报错了。

      

    参考:http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html

  • 相关阅读:
    IDEA连接 Oracle数据库
    什么是混合云备份
    什么是阿里云ACA认证
    什么是阿里云ACE认证
    什么是轻量应用服务器
    什么是时序时空数据库TSDB
    什么是数据管理DMS
    什么是分析型数据库PostgreSQL版
    阿里云多端小程序
    阿里云云计算ACP专业认证考试
  • 原文地址:https://www.cnblogs.com/joya0411/p/3740077.html
Copyright © 2011-2022 走看看