这就是 groupSort 真正优于 mergeSort 的地方。
长按关注《Python学研大本营》,加入读者群,分享更多精彩 扫码关注《Python学研大本营》,加入读者群,分享更多精彩
我们知道,将一个大问题分解为一系列更小、更简单的问题是一种基本的编程范式。通过检查这些关于排序的想法,可以看出,有时,我们也可以从将我们的问题变成一个完全不同的问题中受益。通过这样做,我们也许能够使用真正提高效率和速度的工具和方法——我们在原始环境中无法使用的工具和方法。
这种方法在大数据环境中似乎具有非凡的价值。在这些环境中,我可能有数以百万计的数据点,如果不是数以百万计的数以百计,甚至数十亿的数据点,其范围将相对较小。从下面的基准中可以看出,这就是 groupSort 真正开始明显优于 mergeSort 的地方。
使用的 Python 版本:3.9.7
处理器:AMD Ryzen 5 3600 6 核处理器 3.60 GHz
内存:16.0 GB
显卡:NVIDIA GeForce RTX 2060 Super
首先,让我真正说明一下我的观点。我将用普通 Python 编写的方法与 Python 的 sorted() 函数进行比较,根据 Wikipedia的说法,该函数是 mergeSort 和 insertSort 的组合,并使用 C 实现。我运行了 100 次迭代的测试,生成了一个随机数组每次100万个元素和10万个范围(不包括在时间统计中)。结果如下:
Timsort,即Python的sorted()函数:

基本组排序:

groupSort 与 timSort(~rng 5000 万,大小 100 万)


groupSort 与 quickSort(~rng 2500 万,大小 100 万)


groupSort vs. countSort(组总是~2x 快)

groupSort 与 bucketSort(~rng 380 万,大小 100 万)


现在,关于普通 Python 中的 groupSort 与普通 Python 中的 mergeSort 的基准比较。
在前面的部分中,所有代码示例都是单次运行。在这里,我将提供这些场景在多次迭代中平均时的屏幕截图。
使用基本组排序:

使用数字桶分组排序:

使用合并排序:

使用基本组排序:

使用数字桶分组排序:

使用合并排序:

使用基本组排序:

使用数字桶分组排序:

使用合并排序:

使用基本组排序:

使用数字桶分组排序:

使用合并排序:

使用基本组排序:

使用数字桶分组排序:

使用合并排序:

使用基本组排序:

使用数字桶分组排序:

使用合并排序:

(完结)
https://medium.com/@ajchristian86/doing-better-than-o-nlog-n-part-5-68895553fb99

本书详细阐述了与Pandas相关的基本解决方案,主要包括Pandas基础,DataFrame基本操作,创建和保留DataFrame,开始数据分析,探索性数据分析,选择数据子集,过滤行,对齐索引,分组以进行聚合、过滤和转换,将数据重组为规整形式,组合Pandas对象,时间序列分析,使用Matplotlib、Pandas和Seaborn进行可视化,调试和测试等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。
链接:https://u.jd.com/UKjx4et
精彩回顾
长按关注《Python学研大本营》
长按二维码,加入Python读者群
扫码关注《Python学研大本营》,加入读者群,分享更多精彩