首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

排好1万本书,需要多长时间?|1分钟科学05

如果你的书架上有10000本书,有一天你想把它们整理一次,你大约需要多长时间呢?

这个问题等价于给10000个大小不同的数排序,问需要多少步骤。

排序有很多方法,比如冒泡法

首先把所有的数字排成一排;

先让前两个数比较,如果小的在前就不动;

如果大的在前,就把这两个数调换一下位置;

然后比较第二、第三个数,依次类推。

一轮之后,你就能把最大的数放在最后了。

只要连续冒泡9999轮,就能排好一万个数。

但是,在最不利的情况下,排好10000本书,你需要进行大约5000万次比较,1秒钟比较一次,大约需要一年半的时间。冒泡法不是一个特别快速的方法。

好的算法能大大节约你的时间,比如你可以使用归并算法

首先把10000个数随机分成5000组,每组2个数。

把每一组的2个数按大小排好序。

再把相邻的两组融合,每组4个数排好序。

依次类推,直到融合为1组,排好10000个数。

使用这种方法,排好10000本书,你大约需要比较13万次,只要一天半的时间。

其实,你也可以所有的书往天上一扔,掉下来看是不是排好序了,如果没有就重新扔。使用这种情况,在最优的情况下,一秒就能排好。但一般情况下,都会耗尽一生。

好的算法不光要快速,更要稳定。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230321A03V0900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券