js quick sort

function partition(array, begin, end, pivot,sort_func)
{
sort_func=eval(sort_func);
var piv=array[pivot];
array.swap(pivot, end-1);
var store=begin;
var ix;
for(ix=begin; ix<end-1; ++ix) {
if(sort_func(array[ix],piv)<=0) {
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;
}

function qsort(array, begin, end,sort_func)
{
if(end-1>begin) {
var pivot=begin+Math.floor(Math.random()*(end-begin));

pivot=partition(array, begin, end, pivot,sort_func);

qsort(array, begin, pivot,sort_func);
qsort(array, pivot+1, end,sort_func);
}
}
Array.prototype.quickSort=function(sort_func)
{
qsort(this,0,this.length,sort_func);
}

function sort_func(a,b){
return b-a;
}
var a =new Array();
a.push(100);
a.push(10);
a.push(20);
a.quickSort(sort_func);


for(var i=0;i<a.length;i++){
alert(a[i]);
}
 

你可能感兴趣的:(js,Quicksort)