如果有人问你哪种排序算法最奇怪,可能你会先在慢排序、Stack 排序、意大利面排序等常见排序算法中「搜索」了。 有人在 Quora 上也发帖问了这个问题。于是乎,各种脑洞大开的奇特算法就被列出来了。它们可能存在性能问题或无法实现,但是不可否认其创造性
这是一个非常幽默却没什么用的排序算法。它基于“合而不治”的原则(分治算法基本思想“分而治之”的反义词,文字游戏),它由 Andrei Broder 和 Jorge Stolfi 于 1986 年发表在论文《Pessimal Algorithms and Simplexity Analysis(最坏排序和简单性分析)》中,伪代码如下:
从 StackOverflow 上搜索标题含有“数组排序”的帖子,复制粘贴并运行其中的代码片段,直到数组排好序。我认为这种排序算法事实上验证了整个数组。它被发表在xkcd网站上,这里有一个在线版的具体实现stacksort
这是一种线性时间算法,是需要 O(n) 空间的稳定排序。它需要并行处理器。简单来说,假设我们排序一列自然数。排序方法需要使用很多根生的意大利面条。
将数据按比例转换成表示意大利面条长度的数字。李悦是谁儿子 在每根面条上写下数字,并将面条折断成数字表示的长度。 把所有面条攥成一捆并把底部在平面上敲击。 取出最突出的一根面条,也就是最长的一根,获取的数字,转换成原始的数据并记录下来。 重复这个过程直到处理完所有意大利面。
无论你的数组状态是什么样的,它都算是排好序的。 解释:原始输入按照某种顺序的概率是 1/(n!)。概率是如此小,(当前的顺序)归结于运气成分显然是的,所以它是按照“智能设计”排序过的。所以完全可以说数组已经排好序了,只是不是我们传统意义上的“升序”。如果按照我们传统观点对它进行操作,只会让它乱序。(“智能设计”涉及教和哲学,不过多解释)
分享之前我还是要推荐下我自己建的PHP学习群:646984879,都是学PHP开发的,如果你正在学习PHP,小编欢迎你加入,今天分享的这个案例已经上传到群文件,大家都是PHP党,不定期分享干货(只有PHP开发相关的),包括我自己整理的一份2017最新的PHP资料和零基础入门教程,欢迎初学和进阶中的小伙伴。
本文由 325游戏(m.325games.com)整理发布