Please enable Javascript to view the contents

图解算法之bogo排序

 ·  ☕ 2 分钟

Bogo 排序(Bogo Sort)也被称为“愚蠢的排序”,是一种非常简单但低效的排序算法,就是不断打乱元素的顺序,直到达到有序为止。又称为猴子排序(Monkey Sort),就像是请猴子帮忙排序一样。

Bogo 排序算法原理

Bogo排序法十分简单,一开始先检查序列是否已经排序完成,如果没有的话就不断地随机弄乱它的元素顺序,直到刚好完成排序为止:

  1. 查看元素是否有序。
  2. 元素无序,那么就打乱顺序。
  3. 再次检查元素是否有序。
  4. 如果有序,排序成功,否则继续重复上述步骤。

图片来源:https://idea-instructions.com/bogo-sort/


Bogo排序的算法复杂度

Bogo排序的最坏时间复杂度为O(∞),一辈子也不能输出排序结果,平均时间复杂度为O(n·n!)。

项目 备注
最差时间复杂度 O(∞) 随机乱排总是不巧地都没猜中。
最佳时间复杂度 O(n) 排序已经正向排序过的序列。
平均时间复杂度 O(n×n!) 随机乱排猜中的机率为n!,再乘上每次乱排前检查是否已排序的时间复杂度。
最差空间复杂度 O(1)
是否稳定

Bogo排序的实现

bogoSort 函数接收两个参数,一个待排序的数组,一个数组排序方法的函数。

简单测试了一下长度为4的数组排序,排了30多次才排对,果然很慢。


bogo排序的意义

搞怪,捣乱。

参考资料

分享

码中人
作者
码中人
Web Developer