Hi,
I did something that will do the job:
Code:
function compare ( left, right ) {
if ( left[0] < right[0] )
return 1;
else if ( left[0] > right[0] )
return -1;
else if ( left[1] < right[1] )
return 1;
else if ( left[1] > right[1] )
return -1;
else
return 0;
}
function qsort ( array, lo, hi ) {
var low = lo;
var high = hi;
mid = array[ Math.floor( (low+high)/2 ) ];
do {
while ( compare(array[low], mid) > 0 )
low++;
while ( compare(array[high], mid) < 0 )
high--;
if ( low <= high ) {
swap( array, low, high );
low++;
high--;
}
} while ( low <= high );
if ( high > lo )
qsort( array, lo, high );
if ( low < hi )
qsort( array, low, hi );
}
function swap ( a, i, j ) {
var tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
var array = new Array();
array[0] = new Array ( 3, "Kevin" );
array[1] = new Array ( 3, "Alice" );
array[2] = new Array ( 2, "Steve" );
array[3] = new Array ( 1, "Adam" );
array[4] = new Array ( 2, "Sammy" );
qsort ( array, 0, array.length-1 );
It uses an adapted version of quicksort, the fastest sorting algorithm.
See the results at http://www.iro.umontreal.ca/~saintamh/test/sort
Bookmarks