算法学习-4 随机排序

72a5af4c57e44056b173a3115bba9352.jpg

 脑袋突然开光, 连忙打开电脑

想到一个之前看短视频刷到的各种算法效率对比,看到一种非常''高效''的随机算法,于是打算不看教程,直接开写,pycharm激活码用不了了32c91b77aef24fcc8b2fdee2dd3fdbac.jpg

 所以只能用只有大佬采用的vim写了,好在算法代码一般不太多,只有区区20+ 行,但算法只有6行....... 

<code>

from time import time

from random import randint

 

 

a = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

n = 0

be = time()

 

while True:

    if a == sorted(a):

        break

    i = randint(0, len(a) - 1)

    j = randint(0, len(a) - 1)

    a[i], a[j] = a[j], a[i]

    n += 1

    print(a)

 

af = time()

al = (af - be) * 1000

print('Finished.')

print(f'It only spent {al}ms.')

print(f'There were {len(a)} numbers and it only tried {n} times.')

print('This is random sort.')

print('It\'s really efficient.')

</code>

非常简单,也非常高效(仅在写代码过程中高效...)

下面是实例:

0f442c0e5b5349ae866ec20d293bf058.jpg

 

 可以看到,以倒序排列的1~10只用了1431601ms,也就是23min,只尝试了6872947次就排好了,非常高效(doge)

 

I use arch,btw

dedb75e8112d423589815226b2e030c4.jpg

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值