Guest User

Untitled

a guest
Mar 23rd, 2015
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // This sort is completely broken =)
  2.  
  3. function main() {
  4.     var arr = createRandomArray(1e4),
  5.         sortedArr = sort(arr);
  6.  
  7.     printLast(sortedArr);
  8. }
  9.  
  10. function createRandomArray(length) {
  11.     var arr = new Array(length);
  12.     for (var i = 0; i < length; ++i) {
  13.         arr[i] = 1 + Math.floor(1000 * Math.random());
  14.     }
  15.     return arr;
  16. }
  17.  
  18. function printLast(arr) {
  19.     console.log('Last:', arr[arr.length - 1]);
  20. }
  21.  
  22. function partial(func, arg1) {
  23.     return function partialWrapper(arg2) {
  24.         return func(arg1, arg2);
  25.     };
  26. }
  27.  
  28. function sort(arr) {
  29.     var result = arr.slice();
  30.     each(0, result.length - 1, partial(iCallback, result));
  31.     return result;
  32. }
  33.  
  34. function iCallback(result, i) {
  35.     var min = findMin(result, i);
  36.     if (min !== i) {
  37.         swap(result, i, min);
  38.     }
  39. }
  40.  
  41. function each(from, to, cb) {
  42.     for (var i = from; i < to; ++i) cb(i);
  43. }
  44.  
  45. function findMin(result, i) {
  46.     jCallback.setMin(i);
  47.     jCallback.setPrevMin(i);
  48.     each(i + 1, result.length, partial(jCallback, result));
  49.     return jCallback.getMin();
  50. }
  51.  
  52. function jCallback(result, j) {
  53.     var min = jCallback.getPrevMin();
  54.     if (result[j] < result[min]) jCallback.setMin(min);
  55. }
  56.  
  57. jCallback.setMin = function setMin(min) {
  58.     jCallback.min = min;
  59. };
  60.  
  61. jCallback.getMin = function getMin() {
  62.     return jCallback.min;
  63. };
  64.  
  65. jCallback.setPrevMin = function setPrevMin(min) {
  66.     jCallback.prevMin = min;
  67. };
  68.  
  69. jCallback.getPrevMin = function getPrevMin() {
  70.     return jCallback.prevMin;
  71. };
  72.  
  73. function swap(result, i, j) {
  74.     var tmp = result[i];
  75.     result[i] = result[j];
  76.     result[j] = tmp;
  77. }
  78.  
  79. main();
Advertisement
Add Comment
Please, Sign In to add comment