这些奇葩的排序算法,你没见过动画吧? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
如果想在 V2EX 获得更好的推广效果,欢迎了解 PRO 会员机制:
pro/about
CoderOnePolo

这些奇葩的排序算法,你没见过动画吧?

  •  
  •   CoderOnePolo Dec 4, 2018 3733 views
    This topic created in 2701 days ago, the information mentioned may be changed or developed.

    如果有人问你哪种排序算法是你最喜欢的,可能你会偏爱简单的冒泡排序,也有可能会选择具备分治思想的快速排序或者归并排序。

    但如果有人问你你所见过哪些奇葩的算法时,你的回答会是什么?

    下面,我就将网上脑洞大开的一些奇葩算法画出来,以飨读者。

    睡眠排序

    根据 CPU 的调度算法实现的,对一组数据进行排序,不能存在负数值,这个数是多大,那么就在线程里睡眠它的 10 倍再加 10,不是睡眠和它的数值一样大的原因是,当数值太小时,误差太大,睡眠的时间不比输出的时间少,那么就会存在不正确的输出结果。

    猴子排序

    随机打乱数组,检查是否排好序,若是,则输出,否则再次打乱,再检查...最佳情况 O(n),平均 O(n*n!),最坏可执行直到世界的尽头。

    一个有趣的理论:一只猴子随机敲打打字机键盘,如果时间足够长,总是能打出特定的文本,比如莎士比亚全集。^_^

    面条排序

    首先去买一捆面条,我喜欢手擀面。找到数组中最大和最小的两个数(O(n)),让最大的数对应一根很长的面条,最小的数对应一根很短的面条。
    重新遍历数组,每遇到一个数,就取一根面条,把它切成这个数对应的长度,可以得到 n 根面条。
    这里的数与面条长度的对应可以用一个严格递增的函数来映射。
    接下来,一手握住这 n 根面条,稍微用力,别握太紧,在平放的桌面上直立着放下,让所有的面条底端接触到桌面。另一只手平行于桌面,从面条上方缓慢往下移动,每当这只手碰到一根面条,移走它,并把对应的数输出到结果数组中,直到移走全部面条。

    你还见过哪些奇葩的排序^_^

    10 replies    2018-12-04 17:17:26 +08:00
    looseChen
        1
    looseChen  
       Dec 4, 2018   1
    有点意识
    nekoneko
        2
    nekoneko  
       Dec 4, 2018   2
    1.我认为一个数组有序
    2.把所有认为这个数组无序的人都杀了
    3.这个数组有序了
    cincout
        3
    cincout  
       Dec 4, 2018   1
    @nekoneko #2 杠一下哈哈.
    //我不这么认为, 有序或者无序只是人们形容这种现象的名词, 而无序这种行为, 就算所有的人都认为它是有序的, 它本身的现象是和世界所颠倒的. 除非世界的规则将无序认为是有序,那它对于人们来说才是真的有序.
    CoderOnePolo
        4
    CoderOnePolo  
    OP
       Dec 4, 2018
    @nekoneko
    @cincout 可以把它叫做 指鹿为马 排序^_^
    nekoneko
        5
    nekoneko  
       Dec 4, 2018
    @cincout 针对人类认知,给你举个栗子,8,0,1 有序吗,按照数字排序是无序的,但如我我按照哪个数字圈多排序呢,那它就是有序的,有序无序只是相对人类来说的,大自然没有这个概念
    noli
        6
    noli  
       Dec 4, 2018   1
    @nekoneko

    你的这种说法只是把规律是否可感知的问题,转换成了存在性问题当然也不能说你的说法完全是错的。毕竟数学是先验的还是后天的,确实是一个很值得争论的哲学问题。
    但是序列在大自然中显然是存在的,譬如花瓣的数量与斐波那契螺旋线,和斐波那契数列,显然有关系,显然存在序列。
    csshoo
        7
    csshoo  
       Dec 4, 2018   1
    @nekoneko 不能解决问题,就解决提出问题的人,这思路在哪见过 [滑稽]
    weiqi1992
        8
    weiqi1992  
       Dec 4, 2018
    @csshoo 刘。。刘海屏?
    ZRS
        9
    ZRS  
       Dec 4, 2018 via iPhone
    最后那个应该是珠排序
    cyspy
        10
    cyspy  
       Dec 4, 2018
    @nekoneko 应该可以用熵来解释,801 这样的序列熵相对来说可能还挺大,如果长起来,88880099009111 熵就比较小了。
    About     Help     Advertise     Blog     API     FAQ     Solana     1605 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 63ms UTC 16:36 PVG 00:36 LAX 09:36 JFK 12:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86