您现在的位置是:亿华云 > 数据库
长见识了!世界上最慢的排序算法!
亿华云2025-10-04 03:34:21【数据库】1人已围观
简介今天,和大家分享一个,世界上最慢的排序算法,猴子排序(bogo sort)。话不多说,先上伪代码:intbogo_sort(int&arr[],intn){while(false==is_so
今天,识世和大家分享一个,界上世界上最慢的最慢排序算法,猴子排序(bogo sort)。序算
话不多说,识世先上伪代码:
int bogo_sort(int& arr[],界上 int n){ while(false== is_sorted(arr[n])){ random_shuffle(arr[n]); } return 0; }之所以叫猴子排序,源自典故:一只猴子随机敲击键盘,最慢只要时间足够久,序算一定能敲出莎士比亚的识世诗。
看了伪代码,界上很容易理解其核心思路是最慢:
(1)判断待排序的数组是否有序,有序则返回排序完毕;
(2)无序,序算则随机打乱数组;
(3)重复(1);
只要执行的识世时间足够长,随机的界上次数足够久,总能够得到排序后的最慢结果,它号称是世界上最慢的排序算法。
那么问题来了,云南idc服务商这个排序有什么用呢?
我能够想到的,就是大学里作为算法课的时间复杂度推导习题,或者面试过程中时间复杂度计算考题了,又或者装13的谈资了,其他好像没有什么用。
那这个排序算法的时间复杂度是多少呢?
简单来分析一下。
n个元素随机打乱,有n!种组合。
一次排序成功的概率是p1 = 1/n!,一次排序失败的概率是p2 = 1-p1; 两次排序成功的概率是p2*p1;画外音:第1次失败,第2次成功。 三次排序成功的概率是p2^2*p1;画外音:前2次失败,亿华云计算第3次成功。 … k次排序成功的概率是p2^(k-1)*p1画外音:前k-1次失败,第k次成功。 …于是,平均排序成功次数的期望:
E(X) =1次 * 一次成功的概率+2次 * 二次成功的概率+3次 * 三次成功的概率+…+k次 * k次成功的概率+…
即:
最后,根据大家大学里学的无穷级数的数学知识,“很容易”得到,其时间复杂度是O(n*n!),这是一个阶乘级别的算法。
【本文为专栏作者“58沈剑”原创稿件,转载请联系原作者】
戳这里,看该作者更多好文
很赞哦!(1553)
上一篇: CNAME:对应解析的记录值为域名地址
下一篇: 什么样的邮箱才是安全的电子邮件地址?
相关文章
- 域后缀首选.com,.net,然后是.cn。后缀选择不当,导致流量损失。域名是企业与互联网网址之间的链接,关键是企业在网络上存在的标志。因此,选择好域名是开展网上工作的首要重要条件。
- 脊叶数据中心架构有哪些优势?
- 浪潮信息联合英特尔全球首发全液冷冷板参考设计,打通液冷规模化应用最后一公里
- 数据中心故障预防90%的问题源于这三点
- 国际域名转移的费用和处理步骤是什么?
- 英特尔谢晓清:以开源开放生态破圈x86安卓,赋能更多应用优化与开发
- 英特尔“重构”晶圆代工部门,着眼AI和下一代芯片制造
- AMD推出AMD Alveo™ V80 计算加速卡:专为内存密集型工作负载设计,满足各种场景应用下的计算加速需求
- 4、选择一个安全的域名注册商进行域名注册
- 数据中心如何与公用事业公司合作以提高电力可用性