+380 67 826 62 92

Пока я готовлю достаточно таки большую статью про AVL деревья, решил разбавить все происходящее немного бессмысленным и ненужным алгоритмом :)Но зато в пьяной беседе — можно рассказать как анекдот. Алгоритм называется sleep sort и использует в себе специфику языков программирования которые ставят события в очередь, к примеру JavaScript.

Замеры производительности на нем я не проводил, да и не надо этого делать :)

Сразу давайте покажем код:

var sleep_sort = function(array, callback){ 
  var sorted = [];
  array.forEach(function(element){
    var el = element;
    setTimeout( 
      function(){
        sorted.push(el);
    }, element);
   });
 setTimeout(function(){
    return callback(sorted);
  }, array.length);
};

Собственно, все просто. Для каждого элемента мы создаем setTimout величиной которого будет значение элемента. В связи с этим элемент timout объекты будет выстреливать тем быстрее чем меньше сам объект. Следовательно, в результате алгоритм будет отсортирован. Ну и естественно мы должны передать callback чтоб знать, когда закончиться сортировка массива.

Как обычно: исходники примеров вы можете найти тут.