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.
 
 
 

61 lines
1.2 KiB

/**
*
*/
var Sorter = function() {};
// NOTE fisher-yates, http://bost.ocks.org/mike/algorithms/
/**
* Returns copy of an array shuffled using Fisher-Yates.
*/
Sorter.prototype.shuffle = function(arr) {
var result = Object.create(arr);
var n = result.length, t, i;
while (n) {
i = Math.random() * n-- | 0; // 0 ≤ i < n
t = result[n];
result[n] = result[i];
result[i] = t;
}
return result;
};
/**
*
*/
Sorter.prototype.generate = function(n) {
var arr = [];
var v;
for (var i = 0; i < n; i++) {
v = Math.floor(i * 255 / n);
arr.push({
value: v,
fill: `rgb(0, 0, ${v})`
});
};
return arr;
};
/**
*
*/
Sorter.prototype.swap = function(arr, i, j) {
// console.info(`swapping ${arr[i].value} and ${arr[j].value}`)
var tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
};
/**
*
*/
Sorter.prototype.sort = function(instruction) {
throw new Error('Sorter.sort() method override required.');
};
/**
*
*/
Sorter.prototype.addInstruction = function(instruction) {
throw new Error('Sorter.addInstruction() method override required.');
};