Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

Sleepsort

Из «Хабра» узнал про алгоритм sleepsort. Он больше забавный, чем практичный, я переписал его на баш:

while [ -n "$1" ]; do
    ( sleep "${1/%[0-9]/}.${1:(-1)}" ; echo "$1" ) &
    shift
done
wait
echo

Смысл в том, что запускается несколько параллельных процессов, по числу сортируемых значений, с паузой кратного значению размера. Вывод каждого из процессов происходит после истечения паузы, поэтому значения появляются в уже отсортированном виде:

$ bash sleepsort 1 2 7 10 3

1
2
3
7
10
4 комментария
Александр Карпинский 2012

Только не «по числу сортируемых параметров», а по числу сортируемых значений. Как-то это запутало сперва.

Евгений Степанищев (bolknote.ru) 2012

Комментарий для Александр Карпинский:

Тут параметры = значения. Но исправлю, ок.

Сергей 2012

javascript

function sleepsort(arr) {
    var q = function (arg) {
        setTimeout(function () {
            console.info(arg);
        }, arg * 1000);
    };
    for (var i = 0; i < arr.length; i++) {
        q(arr[i]);
    }
}
sleepsort([1, 3, 5, 2, 4]);

Евгений Степанищев (bolknote.ru) 2012

Комментарий для Сергей:

Сложно как-то.

http://pastebin.com/UsRFC4yq