Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // This sort is completely broken =)
- function main() {
- var arr = createRandomArray(1e4),
- sortedArr = sort(arr);
- printLast(sortedArr);
- }
- function createRandomArray(length) {
- var arr = new Array(length);
- for (var i = 0; i < length; ++i) {
- arr[i] = 1 + Math.floor(1000 * Math.random());
- }
- return arr;
- }
- function printLast(arr) {
- console.log('Last:', arr[arr.length - 1]);
- }
- function partial(func, arg1) {
- return function partialWrapper(arg2) {
- return func(arg1, arg2);
- };
- }
- function sort(arr) {
- var result = arr.slice();
- each(0, result.length - 1, partial(iCallback, result));
- return result;
- }
- function iCallback(result, i) {
- var min = findMin(result, i);
- if (min !== i) {
- swap(result, i, min);
- }
- }
- function each(from, to, cb) {
- for (var i = from; i < to; ++i) cb(i);
- }
- function findMin(result, i) {
- jCallback.setMin(i);
- jCallback.setPrevMin(i);
- each(i + 1, result.length, partial(jCallback, result));
- return jCallback.getMin();
- }
- function jCallback(result, j) {
- var min = jCallback.getPrevMin();
- if (result[j] < result[min]) jCallback.setMin(min);
- }
- jCallback.setMin = function setMin(min) {
- jCallback.min = min;
- };
- jCallback.getMin = function getMin() {
- return jCallback.min;
- };
- jCallback.setPrevMin = function setPrevMin(min) {
- jCallback.prevMin = min;
- };
- jCallback.getPrevMin = function getPrevMin() {
- return jCallback.prevMin;
- };
- function swap(result, i, j) {
- var tmp = result[i];
- result[i] = result[j];
- result[j] = tmp;
- }
- main();
Advertisement
Add Comment
Please, Sign In to add comment