Python3的两个极其“天才”的排序算法 随机排序 睡眠排序

随机排序

即通过random.shuffle(list)(需要导入random模块)方法对list进行重新排序,直到“刚好”完成排序。
例:


Shuffle(list)方法使用后,会打乱list的元素,并将打乱的结果返回给list,所以该方法无返回值。
这样我们只需要套一个死循环 while true 一直循环,直到出现符合需求的排列为止。

那么如何获得符合需求的序列呢?
可以使用sorted()方法进行排列(没错这玩意直接是内置在python3中,直接排序即可。。。是不是再使用随机排序多此一举了呢?

我也这么认为2333333)
例:

解析:lst == sorted(lst)是一个判断条件,比较后返回值为True/False
然后shuffle方法排序lst变量,之后进行条件判定,如果 不 符合lst的元素 随机后排序 为sorted排序后的元素,则使用while进行循环,直到满足条件为止。
#需要比较强劲的电脑。
在皮了一下之后,我们需要了解这是为什么???

首先命名方法,就是随机排序,这个没的说,另一个命名是“猴子排序”
让猴子敲出莎士比亚全集-果壳

当然啦,这只是皮了亿下下,实际应用中请千万不可使用。

好了,我们接下来整第二个。

   睡眠排序

应该是来自于:https://archive.tinychan.org/read/prog/1295544154
通过创建多线程,用睡眠方式排序
接下来我用python复现一下

len()方法为获取返回对象(字符、列表、元组等)长度或项目个数。
range(x)方法为创建一个从0到x的整数列表。
for 为遍历,这个不详细说了。
接下来说说threading.Thread()方法(一定记住导入threading模块)
我只讲简单的即threading.Thread(target= , args=(,))
Target=一个方法,在此之前需要封装方法。

args=(func,)则是导入封装方法的参数。需要注意的是,该方法的args是目标调用参数的tuple(元组),默认为空元组(),如果你只导入一个参数,必须,必须加“,”,如上上图。
每执行一次threading.Thread(target= , args=()),便会添加一个线程,但是不会启动,直到使用start()启动线程活动。在每个线程对象中最多被调用一次。它安排对象的run() 被调用在一单独的控制线程中。
在完成之后可进行打印,或者添加到一个list中以供使用。

总结:
总的来说这两个算法。。。没有用。。。。
也就图一乐吧。。。
要想图一乐还得图一乐。。。
查了点资料:
https://carbon.now.sh/
https://blog.csdn.net/drdairen/article/details/60962439
https://blog.csdn.net/weixin_40539125/article/details/93379360
https://www.jianshu.com/p/4f526ea40df4
https://blog.csdn.net/weixin_33940102/article/details/89564684