基本思想 把一个无序的数组进行乱排序,然后看其是否会有序,有可能一次之后就有序了,也有可能很多次后依然无序。 最佳情况 \(O(n)\),平均 \(O(n*n!)\),最坏可执行直到世界的尽头。 猴子排序基于无限猴子定理:无限猴子定理是数学概率 ...
这期博客我主要想聊一聊一个没有什么实用价值的排序算法。它的时间复杂度已经超出现有已知任何其他的排序算法,同时,也低于现有任何已知的其他排序算法。它就是猴子算法。 相信在座各位都知道一个无限猴子定理,这个定理的内容就是:让一只猴子在电脑上疯狂的随机打字,只要时间足够的多,就可以打出莎士比亚全集。这个算法的核心也是这样的。 这个算法的过程是这样的:把给定的数组随机排一遍,然后判断是否符合排序要求,如 ...
2021-06-24 13:04 0 152 推荐指数:
基本思想 把一个无序的数组进行乱排序,然后看其是否会有序,有可能一次之后就有序了,也有可能很多次后依然无序。 最佳情况 \(O(n)\),平均 \(O(n*n!)\),最坏可执行直到世界的尽头。 猴子排序基于无限猴子定理:无限猴子定理是数学概率 ...
介绍几个不实用的排序算法,一来可以在学习时增加一些乐趣,放松一下自己,二来可以学习一下、思考一下这些算法失败在哪里,又是否存在一些好的地方? 睡眠排序 这是一个思想比较简单,脑洞巨大的算法 -- 我们知道sleep方法可以让一个线程睡眠s毫秒,如果需要对一个有n个数的数列进行排序,我们何不 ...
//有一只猴子摘了一堆桃子,当即吃了一半,可是桃子太好吃了,它又多吃了一个,第二天它把第一天剩下的桃子吃了一半,又多吃了一个,就这样到第十天早上它只剩下一个桃子了,问它一共摘了多少个桃子? //方法1 function taozi($i){ if($i==10 ...
想做些有关“算法”的练习题,在网上无意间看到了一道很经典的算法题——猴子分桃,于是百度了一下,才发现这道题的相关文档很多很多,但最多的也就是使用C++或者Java来解决这道题,而自己也是初次接触C++。 1.先介绍一下C++使用最常见的编辑器——dev cpp.附上下载地址:(http ...
第一次听着几个的时候,感觉就是老哥你是来闹的吗 后来仔细看了一下 我靠 天才啊,好吧 其实也就是听着挺好的 但是实际应用的话 还是挺多坑的 一、睡眠排序 二、面条排序 首先去买一捆面,是意面挂面还是手擀面请按个人口味决定,最好是硬 ...
算法描述 一个猴子沿着一座山的n级台阶向上爬,猴子上山一步可跳1级或3级,试求上山的n级台阶有多少种不同的爬法 算法思路 利用递推的思想,猴子在第n级台阶上,它之前可能在第n-1级台阶上或者是在n-3级台阶上,由此可得到递推的公式 f(n)代表着n级台阶共有的爬法 f ...
众所周知,猴子排序打破了排序算法$O(n\log{n})$的桎梏(雾),具体的话,显然最好情况一次成功就是$O(n)$,最坏情况那就$O(+\infty)$了。期望是多少呢?让我来推导一番(逃)。 首先,设序列长度为$n$,每次打乱序列和检测是否有序为$O(n)$,每次成功的概率 ...
问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个。第二天早上又将剩下的桃子吃了一半,还是不过瘾又多吃了一个。以后每天都吃前一天剩下的一半再加一个。到第10天刚好剩一个。问猴子第一天摘了多少个桃子? 分析: 这是一套非常经典的算法题 ...