开发中遇到的那些奇葩算法,十万程序员讨论一周都给不出合理解释

如果有人问你哪种排序算法最奇怪,可能你会先在冒泡排序、选择排序、快速排序等常见排序算法中「搜索」了。 有人在 Quora 上也发帖问了这个问题。于是乎,各种脑洞大开的奇特算法就被列出来了。它们可能存在性能问题或无法实现,但是不可否认其创造性。在这里相信有许多想要学习前端的同学,关注小编文章最后面文字,可免费领取一整套系统的web前端学习教程!

睡眠排序

这个搞笑算法流传于 4chan 的 /prog/ 板块。无从查证具体出自哪位程序员,伪代码如下:

算法运行如下: 对于数组中每个元素 x,开启一个新程序:

  • 休眠 x 秒

  • 打印 x 所有元素同时开始计时。 只适用于非负数字。

Bogo 排序/猴子排序

Bogo 排序/猴子排序,名字很奇怪。它是愚蠢排序中的一员。

主要来说,算法就是你把元素随机排列。

如果没有排好序,再次把元素随机排列。

如果还没有排好序,你懂的。下面是个例子:

你不停地随机排序,直到得到一个有序数组。

毫无疑问这是最低效的排序算法之一,除非你非常非常幸运。它时间复杂度是令人窒息的 O(n!),而且随着元素数量增加,很有 O(∞) 的趋势。

量子 Bogo 排序

我是量子 Bogo 排序的粉丝:

  • 随机排列数组中元素。

  • 如果数组没有排好序,摧毁当前宇宙(这一步就拜托你了)

  • 存活的宇宙将会有排好序的数组。 时间复杂度仅仅 O(n) 注意:这种算法依赖于量子力学的平行宇宙理论的可靠性。如果量子力学的平行宇宙理论不准确,这个算法时间复杂度达不到 O(n)

打印店页码排序

一个学生去打印店打印材料。他需要两份,但并没有直接打印两份,而是将每一页打印了两次,像下面这样:

需要的页码顺序: 1 2 3 4 … N; 1 2 3 4 … N

手上的页码顺序: 1 1 2 2 3 3 4 4 …. N N

他开始对打印材料排序,取一页放在左边,然后取一页放在右边。打印店老板看不下去了,直接把材料拿过来。

老板首先取一页放在左边,然后两页放在右边,再然后两页左边,两页右边…… 排序速度瞬间翻倍 ……

如果先想选择学习前端技术,并且想在这个行业走下去。 1、你要规划好你未来的学习计划。 2、学习前端不要急于求成,一定要一点一点的磨练自己的基础不断的丰满自己打磨自己。 3、要有一个良好的学习氛围。要有一个自己的学习团队,这样大家可以融会贯通.有想交流的可以加QQ群:685362217

写在最后:

很多人都知道我是学全栈的,都天真的以为我有全套的前端、网页制作等视频学习资料。我想说你们是对的,我的确有前端的全套视频资料。


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页