Bogo 排序(Bogo Sort)也被称为“愚蠢的排序”,是一种非常简单但低效的排序算法,就是不断打乱元素的顺序,直到达到有序为止。又称为猴子排序(Monkey Sort),就像是请猴子帮忙排序一样。
Bogo 排序算法原理
Bogo排序法十分简单,一开始先检查序列是否已经排序完成,如果没有的话就不断地随机弄乱它的元素顺序,直到刚好完成排序为止:
- 查看元素是否有序。
- 元素无序,那么就打乱顺序。
- 再次检查元素是否有序。
- 如果有序,排序成功,否则继续重复上述步骤。
图片来源: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排序的意义
搞怪,捣乱。