zoukankan      html  css  js  c++  java
  • json数据中的某一个字段进行快速排序quicksort

    快速排序(Quicksort)是对冒泡排序的一种改进,是一种分而治之算法归并排序的风格.

    核心的思想就是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列

    理论上的步骤:

    1. 找到一个“支点”项目在数组中,可以是中心点,基准
    2. 在阵列中的第一项开始指针(左指针)。
    3. 在数组中的最后一个项目开始一个指针(右指针)。
    4. 而在左指针数组中的值小于枢轴值,将左指针向右(加1)。 继续,直到在左指针的值大于或等于所述枢轴值。
    5. 而在合适的指针数组中的值大于枢轴值,将右指针向左(减去1)。 继续下去,直到在正确的指针的值小于或等于所述枢轴值。
    6. 如果左指针是小于或等于右指针,然后交换的值在数组中的这些位置。
    7. 移动左指针向右由1和右指针向左之一。
    8. 如果左指针和右指针不符合,请转到步骤1。
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 
     9 </body>
    10 </html>
    11 <script type="text/javascript">
    12     /***
    13      * 快速排序 Quicksort
    14      * 第一步 在数据集之中,选择一个元素作为“基准”。
    15      * 第二步 所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。
    16      * 第三步 对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
    17      *
    18      */
    19     var arr_style = [
    20         {name: 'a', phone: 1, value: 'val_4'},
    21         {name: 'b', phone: 5, value: 'val_3'},
    22         {name: 'd', phone: 3, value: 'val_2'},
    23         {name: 'c', phone: 4, value: 'val_1'},
    24         {name: 'e', phone: 13, value: 'val_5'},
    25         {name: 'f', phone: 23, value: 'val_6'},
    26         {name: 'g', phone: 14, value: 'val_7'},
    27         {name: 'h', phone: 43, value: 'val_8'}
    28     ];
    29     var arr = [];
    30     for(var a =0; a< arr_style.length; a++){
    31         arr[a]= arr_style[a].phone;
    32     }
    33     var quicksort = function(arr){
    34         if(arr.length <= 1){return arr;}
    35         var pivotIndex = Math.floor(arr.length/2);
    36         var pivot = arr.splice(pivotIndex, 1)[0];
    37         var left = [];
    38         var right = [];
    39 
    40         for(var i = 0; i< arr.length; i++){
    41             if(arr[i] < pivot){
    42                 left.push(arr[i]);
    43             }else{
    44                 right.push(arr[i]);
    45             }
    46         }
    47         return quicksort(left).concat([pivot], quicksort(right));
    48     }
    49     var result = quicksort(arr);
    50     console.log(JSON.stringify(result));
    51 </script>
  • 相关阅读:
    Maven No sources to compile
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.4:single (make-assembly) on project hive-udf: Error reading assemblies: No assembly descriptors found. -> [Help 1]
    在使用maven时出现Invalid packaging for parent pom.xml, must be _pom_ but is _xxx类问题的处理
    blogs
    resouces
    Natural Language Processing with Python 1.1
    Fundamentals of Python: Preface
    移动互联网
    时间都去哪儿了
    凝思磐石安全操作系统官方版 下载
  • 原文地址:https://www.cnblogs.com/liubeimeng/p/5417452.html
Copyright © 2011-2022 走看看