快速排序

  1. var qurckSort = function(array){
  2.   function qsort(array, begin, end){
  3.     if(end>begin){
  4.       //找到枢纽
  5.       var index = partition(array, begin, end);
  6.       qsort(array, begin, index-1);
  7.       qsort(array, index+1, end);
  8.     }
  9.   }
  10.   //定义三个内部函数
  11.   function partition(array, begin, end){
  12.     //随意定位枢纽的位置
  13.     var index=begin+Math.floor(Math.random()*(end-begin));
  14.     //获取枢纽的值
  15.     var pivot=array[index];
  16.     //获取枢纽后, 将其置放到数组的最后一个位置
  17.     swap(array,index,end);
  18.     //之后循环数组, 与枢纽进行比较, 相当于重新排数组
  19.     for(var i=index=begin;i<end;i++){
  20.       //如果当前元素小于枢纽,则交换位置
  21.       if(array[i]<pivot){
  22.         swap(array, index++, i);
  23.       }
  24.     }
  25.     swap(array, index, end);
  26.     return index;
  27.   }
  28.   function swap(array,a,b){
  29.     var tmp = array[a]
  30.     array[a] = array[b]
  31.     array[b] = tmp ;
  32.   }
  33.   qsort(array, 0, array.length-1);
  34.  }

你可能感兴趣的:(快速排序)