当前位置: 首页 > 知识库问答 >
问题:

Python中的Timsort执行时间

堵远航
2023-03-14

我正在研究一些排序算法和它们的执行时间。我在Python中实现了一些算法,我正在测量它们对一些数组进行排序需要多长时间。我发现Python原生实现了提姆排序作为列表的排序算法。然而,我想将原生提姆排序与我在GitHub上找到的实现(这个)进行比较。为什么原生实现需要0.000630140304565秒来对51200个元素的数组进行排序,而我之前链接的实现需要40.7546050549秒来对同一个数组进行排序?

[编辑]为了获得时间,我在执行排序算法之前和之后使用“time.time()”,然后我只做了区别。

我希望本机实现速度更快,但不是那么快。事实上,我还用Python实现了其他排序算法,例如,合并排序需要0.148133039474秒来排序同一个数组。我没想到合并排序和Timsort的Python实现之间有这么大的差异。

[EDIT2]问题是,我发现的实现效率不高,实际上不是Timsort。对不起,伙计们,我刚刚发现Timsort是theta(nlgn),我相信这是正确的实现。现在的问题是:是否存在Timsort的高效Python实现?

共有1个答案

石臻
2023-03-14

2020年11月24日

从2018年10月开始(在这里提出原始问题之前),一个非常完整且经过测试的timthon实现在这里:

https://gist.github.com/ruminations/89a045dc0ef7edfb92304a0de0752ee0

评注中包含了有益的教育链接。

 类似资料:
  • 问题内容: 我想测量在Python程序中评估一块代码所花费的时间,可能在用户cpu时间,系统cpu时间和经过时间之间进行区分。 我知道该模块,但是我有许多自写函数,在设置过程中传递它们并不是很容易。 我宁愿有一些可以使用的东西: 用户和系统的CPU时间不是必需的(尽管我想测量它们),但是对于过去的时间,我希望能够执行类似的操作,而不是使用复杂的命令或模块。 问题答案: 要获取以秒为单位的经过时间,

  • 问题内容: 我想计算我的函数在Java中执行需要多少CPU时间。目前我正在做如下。 但是我发现,对于相同的I / PI,根据系统负载,获得不同的时间。 因此,如何获得我的函数执行所需的确切CPU时间。 问题答案: 随着JVM预热,所需的时间会有所不同。第二次运行将始终比第一次运行快。(第一次必须加载类并调用静态块)运行该方法10,000次后,它将再次更快(将代码编译为本机机器代码的默认阈值) 为了

  • 问题内容: 我在Python中有一个命令行程序,需要花一些时间才能完成。我想知道完成跑步所需的确切时间。 我看过该模块,但似乎仅适用于少量代码段。我想安排整个节目的时间。 问题答案: Python中最简单的方法: 假设你的程序至少需要十分之一秒才能运行。 输出:

  • 本文向大家介绍Python执行时间的计算方法小结,包括了Python执行时间的计算方法小结的使用技巧和注意事项,需要的朋友参考一下 首先说一下我遇到的坑,生产上遇到的问题,我调度Python脚本执行并监控这个进程,python脚本运行时间远远大于python脚本中自己统计的程序执行时间。 监控python脚本执行的时间是36个小时,而python脚本中统计自己执行的时间是4个小时左右。 问题暴漏之

  • 问题内容: 当我尝试在phpMyadmin中执行(某些)查询时,出现此错误 致命错误:第140行的C:\ xampp \ phpmyadmin \ libraries \ dbi \ mysql.dbi.lib.php中超过60秒的最大执行时间 因为我有一个很大的表(超过900万条记录) 我已经编辑了文件C:\ xampp \ php \ php.ini 并将“最大执行时间”的值从60更改为100

  • 问题内容: 我试图弄清楚控制流程是如何工作的。 我想显示一个矩形并使它闪烁三下。我写了这段代码,但是没有用。我猜这是因为在之前执行了,实际上并没有画任何东西。如果是这样,我怎么能交换的控制流程,并mainloop使其工作? 我的代码: 问题答案: 事件驱动的编程需要不同于过程代码的思维方式。你的应用程序正在无限循环中运行,将事件从队列中拉出并进行处理。要制作动画,你需要做的就是在适当的时间将项目放