Nodejs Array Quick Sort qsort(begin,end)

Here you can find the source of qsort(begin,end)

Method Source Code

Array.prototype.qsort = function(begin,end){
   //from w w w  .  j a  va 2 s . c o  m
   function swap(array,a,b){
      var c = array[a];
      array[a] = array[b];
      array[b] = c;
   }

   if(begin < end){
      var array = this;
      var index = begin;
      var pivot = array[index];
      swap(array,index,end);
      for(var i=begin; i<=end; i++){
         if(array[i] < pivot){
            swap(array,index,i);
            index++;
         }
      }
      swap(array,index,end);
      this.qsort(begin,index-1);
      this.qsort(index+1,end);
      return this;
   }else{
      return this;
   }
}

Related

  1. qsort(array, begin, end)
    Array.prototype.swap=function(a, b)
      var tmp=this[a];
      this[a]=this[b];
      this[b]=tmp;
    function partition(array, begin, end, pivot)
      var piv=array[pivot];
    ...
    
  2. qsort(array, begin, end)
    $(function ($) {
    function dosort(form)
      var array=form.unsorted.value.split(/ +/);
      quick_sort(array);
      form.sorted.value=array.join(' ');
    function quick_sort(array)
      qsort(array, 0, array.length);
    function qsort(array, begin, end)
      if(end-1>begin) {
        var pivot=begin+Math.floor(Math.random()*(end-begin));
        pivot=partition(array, begin, end, pivot);
        qsort(array, begin, pivot);
        qsort(array, pivot+1, end);
    function partition(array, begin, end, pivot)
      var piv=array[pivot];
      array.swap(pivot, end-1);
      var store=begin;
      var ix;
      for(ix=begin; ix<end-1; ++ix) {
        if(array[ix]<=piv) {
          array.swap(store, ix);
          ++store;
      array.swap(end-1, store);
      return store;
    Array.prototype.swap=function(a, b)
      var tmp=this[a];
      this[a]=this[b];
      this[b]=tmp;
    });
    
  3. qsort(array, begin, end)
    Array.prototype.swap=function swapf(a, b)
        var tmp=this[a];
        this[a]=this[b];
        this[b]=tmp;
    function partition(array, begin, end, pivot)
        var piv=array[pivot];
    ...
    
  4. qsort(array, begin, end)
    var arr = [2, 4, 6, 1, 3, 5, 8, 7];
    Array.prototype.swap=function(a, b)
      var tmp=this[a];
      this[a]=this[b];
      this[b]=tmp;
    function qsort(array, begin, end)
      if(end-1>begin) {
        var pivot=begin+Math.floor(Math.random()*(end-begin));
        pivot=partition(array, begin, end, pivot);
        qsort(array, begin, pivot);
        qsort(array, pivot+1, end);
        return  array;
    function partition(array, begin, end, pivot)
      var piv=array[pivot];
      array.swap(pivot, end-1);
      var store=begin;
      var ix;
      for(ix=begin; ix<end-1; ++ix) {
        if(array[ix]<=piv) {
          array.swap(store, ix);
          ++store;
      array.swap(end-1, store);
      return store;
    console.log(qsort(arr, 0, arr.length));
    
  5. qsort()
    Array.prototype.qsort = function()
        if (this.length < 2)
            return this;
        var head = this.shift();
        return unpack(function(low, high) {
            return [].concat(low.qsort(), head, high.qsort());
        }, this.partition(function(_) { return _ < head; }));
    };
    ...