por si tienes un array con esta estructura:
row | col. 1 | col. 2
---------------------
0 | 3 | Kevin
1 | 3 | Alice
2 | 2 | Steve
3 | 1 | Adam
4 | 2 | Sammy
y el codigo de inicializacion es algo asi:
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" );
el sort array deberia ser asi:
1,Adam
2,Sammy
2,Steve
3,Alice
3,Kevin
las funciones serian algo asi
function compare ( array, left, right ) {
var depth = 0;
while ( depth < array[left].length && depth < array[right].length ) {
if ( array[left][depth] < array[right][depth] )
return 1;
else if ( array[left][depth] > array[right][depth] )
return -1;
depth++;
}
return 0;
}
function qsort ( array, lo, hi ) {
var low = lo;
var high = hi;
mid = 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 );
espero te sirva amigo