You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.3 KiB
80 lines
1.3 KiB
/**
|
|
* Mnemonist Heap Comparators
|
|
* ===========================
|
|
*
|
|
* Default comparators & functions dealing with comparators reversing etc.
|
|
*/
|
|
var DEFAULT_COMPARATOR = function(a, b) {
|
|
if (a < b)
|
|
return -1;
|
|
if (a > b)
|
|
return 1;
|
|
|
|
return 0;
|
|
};
|
|
|
|
var DEFAULT_REVERSE_COMPARATOR = function(a, b) {
|
|
if (a < b)
|
|
return 1;
|
|
if (a > b)
|
|
return -1;
|
|
|
|
return 0;
|
|
};
|
|
|
|
/**
|
|
* Function used to reverse a comparator.
|
|
*/
|
|
function reverseComparator(comparator) {
|
|
return function(a, b) {
|
|
return comparator(b, a);
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Function returning a tuple comparator.
|
|
*/
|
|
function createTupleComparator(size) {
|
|
if (size === 2) {
|
|
return function(a, b) {
|
|
if (a[0] < b[0])
|
|
return -1;
|
|
|
|
if (a[0] > b[0])
|
|
return 1;
|
|
|
|
if (a[1] < b[1])
|
|
return -1;
|
|
|
|
if (a[1] > b[1])
|
|
return 1;
|
|
|
|
return 0;
|
|
};
|
|
}
|
|
|
|
return function(a, b) {
|
|
var i = 0;
|
|
|
|
while (i < size) {
|
|
if (a[i] < b[i])
|
|
return -1;
|
|
|
|
if (a[i] > b[i])
|
|
return 1;
|
|
|
|
i++;
|
|
}
|
|
|
|
return 0;
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Exporting.
|
|
*/
|
|
exports.DEFAULT_COMPARATOR = DEFAULT_COMPARATOR;
|
|
exports.DEFAULT_REVERSE_COMPARATOR = DEFAULT_REVERSE_COMPARATOR;
|
|
exports.reverseComparator = reverseComparator;
|
|
exports.createTupleComparator = createTupleComparator;
|