正如其名,猴子(逗比)排序。简单点来说,这个排序的精髓就是随机打乱数组,检查是否排好序,若是,则输出,否则再次打乱,再检查…最佳情况O(n),平均O(n*n!),最坏可执行直到世界的尽头。算法基本上就是这样的: 执行结果是这样的: 一共测试了三次,8个元素数组排序完成分别是39.1,52.2,19.0秒。总的来说的话,这就是一个逗比排序方法....
正如其名,猴子(逗比)排序。简单点来说,这个排序的精髓就是随机打乱数组,检查是否排好序,若是,则输出,否则再次打乱,再检查…最佳情况O(n),平均O(n*n!),最坏可执行直到世界的尽头。算法基本上就是这样的: 执行结果是这样的: 一共测试了三次,8个元素数组排序完成分别是39.1,52.2,19.0秒。总的来说的话,这就是一个逗比排序方法....
在了解了睡眠排序之后,又发现了新大陆-面条排序。 先说原理: 首先去买一捆面,是意面挂面还是手擀面请按个人口味决定,最好是硬的。找到数组中最大和最小的两个数(O(n)),让最大的数对应一根很长的面条,最小的数对应一根很短的面条。重新遍历数组,每遇到一个数,就取一根面条,把它切成这个数对应的长度,可以得到n根面条。这里的数与面条长度的对应可以用一个严格递增的函数来映射。接下来,一手握住这n根面条,稍微用力,别握太紧,在平放的桌面上直立着放下,让所有的面条底端接触到桌面。另一只手平行于桌面,从面条上方缓慢往下移动,每当…
朋友偶然给我发了一个截图,,,WTF??! 起初看了一脸懵逼,这算哪门子排序算法?百度走一朝才找到是睡眠排序。 原理很简单,就是通过CPU调度来实现的。数组里面每个元素都创建一个线程,然后让线程休眠排序元素值的时间,最后输出结果。 知道原理了之后很容易就能想到这个排序算法的缺陷:效率不高,不能为负数(应该说是完全没有效率可言)。如果有超过10w个元素,而且其中有很大的数据,那排完序得何年何月。而且数组越大,产生的误差越大。 当然,这么有趣的算法,怎么也得实践一下。为了避免产生误差,我对序列中每个元素线程的休眠时间放…
COPYRIGHT © 2023 quarkbook.com. ALL RIGHTS RESERVED.
Theme Kratos Made By Seaton Jiang