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

    快速排序思想:

      找一个元素作为基准,然后对数组进行分区,使基准左边的数据比基准值小,基准右边的数据比基准值大,如此作为基准的元素调整到排序后的正确位置。然后再按此方法对这两部分数据分别进行快速排序,整个排序过程递归进行,使得数据正确排序。

     

    以前常用的方法:

    function quicksort(arr, low, high)
    {
        low = typeof low == 'number' ? low : 0;
        high = typeof high == 'number' ? high : arr.length-1;
    
        var left = low,
            right = high;
    
        if(low < high){
            var key = arr[left];
            while(left < right)
            {
                while(left < right && arr[right] >= key)
                {
                    right--;
                }
                arr[left] = arr[right];
                while(left < right && arr[left] <= key)
                {
                    left++;
                }
                arr[right] = arr[left];    
            }
            arr[left] = key;
            quicksort(arr, low, left-1);
            quicksort(arr, left+1, high);
        }
        return arr;
    }
    
    //var arr = quicksort([1,3,4,2]);

    看了阮一峰老师的博客后,发现用JS数组的特性来写特别方便,也容易理解:

    function quicksort(arr)
    {
        if (arr.length == 0)
            return [];
     
        var left = new Array();
        var right = new Array();
        var pivot = arr[0];
     
        for (var i = 1; i < arr.length; i++) {
            if (arr[i] < pivot) {
               left.push(arr[i]);
            } else {
               right.push(arr[i]);
            }
        }
     
        return quicksort(left).concat(pivot, quicksort(right));
    }
    
    //var arr = quicksort([1,3,4,2]);

     上面两种都是为了将小的数据移到基准左侧,大的数据移到基准右侧,只是使用的方法不同。

     

  • 相关阅读:
    Android studio 安装,JDK 出错解决方案
    Struts2 一、 视图转发跳转
    @Transactional 注解说明
    基于Schema的AOP 配置使用详解
    CSS滤镜让图片模糊(毛玻璃效果)实例页面
    Struts 2.3.4.1完整示例
    StudentSchema student实例数据库环境搭建
    network is unreachable 解决方案之一
    Oracle 转换函数
    Oracle检查与安装操作内容
  • 原文地址:https://www.cnblogs.com/zhenwen/p/5925241.html
Copyright © 2011-2022 走看看