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
Только не «по числу сортируемых параметров», а по числу сортируемых значений. Как-то это запутало сперва.
Комментарий для Александр Карпинский:
Тут параметры = значения. Но исправлю, ок.
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]);
Комментарий для Сергей:
Сложно как-то.
http://pastebin.com/UsRFC4yq