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

		pivot=multiPartition(array, begin, end, pivot, column);

		multiQSort(array, begin, pivot, column);
		multiQSort(array, pivot+1, end, column);
	}
}

// Implement the swap() function and attach it to
// the array
Array.prototype.swap=function(a, b)
{
	var tmp=this[a];
	this[a]=this[b];
	this[b]=tmp;
}


function multiPartition(array, begin, end, pivot, column)
{

	var piv=array[pivot][column];
	array.swap(pivot, end-1);
	var store=begin;
	var ix;
	for(ix=begin; ix<end-1; ++ix) {
		if(array[ix][column]<=piv) {
			array.swap(store, ix);
			++store;
		}
	}
	array.swap(end-1, store);

	return store;
}

function multiQuickSort(array, column)
{
	multiQSort(array, 0, array.length, column);
}