• 快速排序算法的简短描述


    一个数组,比如:

    [3,9,2,1,5,4]

    取出某个元素(比如第一个元素3);

    将除3之外的元素元素分为两组,小于(less than)等于(equal)3的为一组,[1,2],记为lt,大于(greater than)3的为一组[4,5,9] ,记为gt;

    对lt 和 gt 重复上面的步骤——快速排序是一个递归过程(recursive);

    将最终的结果合并。

    用js来描述就是:

      // list that greater than n
      function listgt(list,n){
        return list.filter(function(m){
                 return m > n;
               })
      }
      // eg.
      // 返回大于2的元素
      // -> [ 3, 9, 5, 4 ]
      // console.log(listgt([3,9,2,1,5,4],2));
      
      
      // list that less than or equal to n
      function listlet(list,n){
        return list.filter(function(m){
                 return m <= n;
               })
      }
      // eg.
      // 返回比小于或等于2的元素
      // -> [ 2, 1 ]
      // console.log(listlet([3,9,2,1,5,4],2));
      
      function first(list){
        return list[0];
      }
      function rest(list){
        return list.slice(1);
      }
      
      function quicksort(list){
        if(list.length === 0){
          return [];
        }else{
          var n = first(list)
            , lt = listlet(rest(list),n)
            , gt = listgt(rest(list),n)
      
          // 递归 & 合并
          return [].concat(quicksort(lt)
                          ,n
                          ,quicksort(gt))
        }
      }
      console.log(quicksort([3,9,2,1,5,4]));
      // [ 1, 2, 3, 4, 5, 9 ]
  • 相关阅读:
    几种排序算法比较
    VB 增强的部件与引用
    EXCEL表格常用函数使用的难点
    VBA取得EXCEL表格中的行数和列数
    VB指针 与CopyMemory
    【VB】StrConv函数 vbUnicode用法
    TCP/IP笔记(七)TCP详解
    TCP/IP笔记(六)TCP与UDP
    TCP/IP笔记(四)IP协议
    TCP/IP笔记(三)数据链路层
  • 原文地址:https://www.cnblogs.com/wewe/p/3163974.html
Copyright © 2020-2023  润新知