睡眠排序

       今天看到一个帖子,帖名叫《Genius sorting algorithm: Sleep sort》。看过以后感受虽然实用价值不高,但挺受启发的,重点是它实在是太欢乐了。python

发明者帖子算法

:
Man, am I a genius. Check out this sorting algorithm I just invented.
朋友,我真是个天才,快来看看我刚发明的排序算法。


#!/bin/bash
function f() {
    sleep "$1"
    echo "$1"
}
while [ -n "$1" ]
do
    f "$1" &
    shift
done
wait

example usage:
./sleepsort.bash 5 3 6 3 6 3 1 4 7

评论shell

该贴有1000+回复,我挑几个有趣的回复分享下:bash


路人A:ide

Oh god, it works.

But I don't like to wait 218382 seconds to sort '(0 218382)

性能

哦,春哥,它竟然能用,但我不想用218382秒去排(0 218382)this


路人B:spa

If the difference between any two of the numbers is too small, race conditions will fuck you up the ass.线程

若是两个数之间的差距过小,竞态条件就要爆你菊花了。设计


路人C:

What about 
./sleepsort -1 -2 -3 ?

If you slept exp(n) instead of n it could easily include negative integers too!

排-1 -2 -3怎么办?若是你睡exp(n)而不是n,它就能包含负数了。


路人D:

Someone email this to Knuth

你能够给Knuth发邮件了


路人E:

I think thats brilliant :)

Would be fun to design a hardware sorter, based on this..

这招挺高,能够根据这个设计一个硬件排序器


路人F:

This has a best case O(n) and an infinity high worst case. (because its 0(n * Constant) and the constant could be much greater than n)

它有一个最好的O(n)的时间复杂度和一个无穷大的最坏复杂度,由于这个常数可能比n大的多的多


路人G:

I heartily disagree with all the attempts to downplay the brilliance of the sleep sort algorithm. Many of you have missed the important point that while traditional sorting algorithms can only utilize one core, sleep sort has the capacity to use the full power of a massively parallel execution environment.
Given that you need nearly no computing in each of the threads, you can implement them using low-power CPUs, so this is in fact a GREEN COMPUTING algorithm.
Oh, and did I mention that the algorithm can also run inside a cloud...?
Sure, you're a genius!

我由衷的不一样意那些低估sleepsort这个天才算法的举动,许多人可能忽略了一个重点那就是传统的排序只能利用一个核心,而sleepsort有这个能力充分利用能够作大量并行计算的环境。

在每一个线程中给出你几乎不须要计算的部分,你能够用低性能CPU搞定它们,因此事实上,这是一个“绿色计算”算法。

还有我提到的这个方法能在云端运行不?

总之,你是个天才!


路人H:

pretty fucking cool !

真是太TM的cool了!

相关文章
相关标签/搜索