快速排序方法

var quickSort = function(arr) {
console.time(‘2.快速排序耗时‘);
  if (arr.length <= 1) { return arr; }
  var pivot = arr.splice(0, 1)[0];
  var left = [];
  var right = [];
  for (var i = 0; i < arr.length; i++){
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
console.timeEnd(‘2.快速排序耗时‘);
  return quickSort(left).concat([pivot], quickSort(right));
};
var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
console.log(quickSort(arr));//[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]

时间: 2024-11-05 11:35:00

快速排序方法的相关文章

Java中双基准快速排序方法(DualPivotQuicksort.sort())的具体实现

在Java语言的Arrays类下提供了一系列排序(sort)方法,帮助使用者对各种不同数据类型的数组进行排序. 在1.7之后的版本中, Arrays.sort()方法在操作过程中实际调用的是DualPivotQuicksort类下的sort方法,DualPivotQuicksort和Arrays一样,都在java.util包下,按字面翻译过来,就是双(Dual)基准(Pivot)快速排序(Quicksort)算法. 双基准快速排序算法于2009年由Vladimir Yaroslavskiy提出,

快速排序方法——python实现

参考博文:http://www.cnblogs.com/jingmoxukong/p/4302891.html 快速排序是一种交换排序. 快速排序由C. A. R. Hoare在1962年提出. 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都是比它大的数. 它的基本流程是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到

————————C语言中快速排序方法——————————————

在对浮点型排序是一定要用三木运算符(三目运算符内容下去自己看),因为如果也是用整形那样的减法的时候如果是两个十分相近的数字 可能返回一个小数(自己一会去试试),冉冉他cmp返回值是int(试试别的)因此就会将这个小数返回为0,系统认为其相等,失去了本来存在的大小关系.所以为了安全起见对浮点型进行快速排序的时候还是用三目运算符. ————————————1——————————————— 对int类型数组的排序 int a[100];//定义数组 int cmp (const void*a,cons

javascript 快速排序方法

"快速排序"的思想很简单,整个排序过程只需要三步: (1)在数据集之中,选择一个元素作为"基准"(pivot). (2)所有小于"基准"的元素,都移到"基准"的左边:所有大于"基准"的元素,都移到"基准"的右边. (3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止. var function quickSort(arr){ i

js快速排序方法

function quickSort(arr){ if(arr.length<=1){ return arr; } var arrIndex=Math.floor(arr.length/2); var x=arr.splice(arrIndex,1)[0]; var left=[]; var right=[]; for(var i=0;i<arr.length;i++){ if(arr[i]<x){ left.push(arr[i]); } else{ right.push(arr[i]

列举你所知道的排序方法,请写出快速排序的伪代码

排序的方法有:插入排序(直接插入排序.希尔排序),交换排序(冒泡排序.快速排序),选择排序(直接选择排序.堆排序),归并排序,分配排序(箱排序.基数排序) 快速排序的伪代码: / /使用快速排序方法对a[ 0 :n- 1 ]排序 从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该元素为支点 把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点 递归地使用快速排序方法对left 进行排序 递归地使用

快速排序的两种实现方法(js)

快速排序的基本思想:通过一趟排序,将待排记录分割成独立的两部分,其中一部分记录的关键字均比另外一部分记录的关键字小,则可分别对着两部分记录继续进行排序,以达到整个序列有序的目的.--------------冒泡的升级版. 分为两种方法:(1)使用两个数组进行存放.(2)使用交换(正宗版本) (1) function quickSort(arr){ if(arr.length<1){ return arr; } var pivotIndex=Math.floor(arr.length/2);//找

算法--排序--分治与快速排序

学习排序算法也有一段时间,一直没有好好整理下排序算法的相关知识,排序在算法中是最基础也是最重要的,所以有必要自己进行一番整理,在提高领悟算法本质的同时以备以后自己复习,顺便也将自己领悟到的一些思想进行记录. 下面简单整理下快排的算法感悟,当然,个人觉得领悟快排的核心思想分治才是学习这个算法的最重要目的. 一.快排的思想 1.分治思想.是的,快排最核心的思想就是:递归中重要的思想,分治.好吧,其实刚刚接触分治的时候,或者说递归的时候,我真的真的无法真正理解,感觉就是:好像理解了,但是细想又觉得有困

排序算法之 Java简单快速排序算法

package net.qh.test.sort; import java.util.ArrayList; import java.util.Calendar; import java.util.List; /** * Created by Administrator on 2016/03/01. */ public class SimpleQuick { public int[] sort(int[] arr,int left,int right){ if ( arr == null || a