2017-06-16 114 views
1

我正在使用快速排序算法对数据进行排序。出于某种原因,当我按id(整数),然后按名称(字符串)排序时,计算速度比仅从名称(字符串)开始排序时快。按ID排序然后按名称比按名称排序更快?

假设快速排序算法是正确的(我不使用任何随机或辅助性算法来找到一个很好的支点),数据及其顺序都是一样的,代码不包含任何错误,有什么事情可能是这个原因?

+2

我认为可以为用户提供'timeit'聚集了​​一些计时数据与一些可重复的代码放在一起示区别? – DeepSpace

+1

通过“按ID和按名称排序”,您是否使用复杂标准进行单一排序,或者连续进行2次排序?你能提供一个数据看起来像什么的概念吗? –

+0

时差约为8秒。我使用了2次连续排序。我正在编辑此问题以添加代码和数据示例 –

回答

-3

它是一种非常简单的答案,但。使用快速排序时,您的平均性能为O(n Logn)。所以当你按照id排序的时候,你可能正在使用这段时间。当你在名称上应用O(n log n)值的计算时。你可能在两个不同的数据集上进行相同的计算。它就像一般的数学 - 二是大于一。

有一点要注意的是,当你排序字符串,通常会花费更多的时间比你排序整数。 (除非你是整数很长,或者你串短,您使用的ASCII值排序)

+1

我在谈论相反的......不知何故2种比1更快 –