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

    原理:(1)在数据集之中,选择一个元素作为“基准”(pivot)。

       (2)所有小于“基准”的元素,都移到“基准”的左边;所有大于“基准”的元素,都移到“基准”的右边。

       (3)对“基准”左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。

    代码实现:

     1 function quickSort(arr) {
     2 
     3     // 这步判断很重要,因为递归,每次分治时都要判断
     4     // 并且不能将arr.length缓存成变量len,因为取pivot的时候用splice会把数组长度减1
     5     if (arr.length <= 1) return arr;
     6 
     7     var mid = Math.floor(arr.length / 2),    // 取得中间元素的索引
     8         pivot = arr.splice(mid, 1)[0],    // 以中间元素为基准元素,arr.splice()返回数组
     9         left = [],    // 用于存放比pivot小的元素
    10         right = [];    // 用于存放个比pivot大的元素
    11 
    12     for (var i=0; i<arr.length; i++) {
    13         if (arr[i] < pivot) {
    14             left.push(arr[i]);
    15         } else {
    16             right.push(arr[i]);
    17         }
    18     }
    19 
    20     return quickSort(left).concat([pivot], quickSort(right));
    21 }

    参考:快速排序(Quicksort)的Javascript实现

    Scoop It and Enjoy the Ride!
  • 相关阅读:
    第五课 主引导程序的扩展 下
    C.Candy
    B.大钉骑马走江湖
    A喝酒(北京林业大学校赛)
    HDU 5666 Segment
    南京理工大学第八届校赛题目题解(部分)
    TCO 2016 Round 1B
    139. Word Break
    90. Subsets II
    78. Subsets
  • 原文地址:https://www.cnblogs.com/Ruth92/p/5427944.html
Copyright © 2011-2022 走看看