Python 为什么内置的.sort()函数比手动编码的排序算法更有效?
我用python编写了关于这个问题的代码,但我的问题涉及所有编程语言 我生成了10000000个随机数据点,并使用快速排序对它们进行排序 在我的电脑上,花了大约57秒 然后,我又生成了10000000个数据点,并使用内置的Python 为什么内置的.sort()函数比手动编码的排序算法更有效?,python,sorting,quicksort,Python,Sorting,Quicksort,我用python编写了关于这个问题的代码,但我的问题涉及所有编程语言 我生成了10000000个随机数据点,并使用快速排序对它们进行排序 在我的电脑上,花了大约57秒 然后,我又生成了10000000个数据点,并使用内置的.sort()函数对它们进行排序,耗时约4秒 为什么差异如此之大?.sort()函数使用什么排序算法 我假设.sort()使用的排序算法是快速排序,对吗 下面是我使用的快速排序算法(不是我的代码,我用它来快速测试) 将numpy导入为py 数组=np.随机.正常(100,510
.sort()
函数对它们进行排序,耗时约4秒
为什么差异如此之大?.sort()
函数使用什么排序算法
我假设.sort()
使用的排序算法是快速排序,对吗
下面是我使用的快速排序算法(不是我的代码,我用它来快速测试)
将numpy导入为py
数组=np.随机.正常(100,510000)
def分区(arr、低、高):
i=(低-1)
枢轴=arr[高]
对于范围内的j(低、高):
如果arr[j]Python默认使用TIM SORT
作为排序技术
您可以从中获得很多信息。默认情况下,Python使用TIM SORT
作为排序技术的一种工具
你可以从中获得很多信息,Python是一个不好的研究案例,因为内置/模块函数很可能是用C编写并编译成机器代码的,而Python代码需要解释,这通常要慢几个数量级。是的,C。一般来说,比较C代码和Python代码就像比较保时捷和自行车一样。即使你走同样的路线,保时捷也可能更快到达那里。因此,如果我将代码编译成.exe,速度也会一样?@Chessnut你无法将Python代码编译成机器代码(在某种程度上,除了numby
,cython
等例外)。您需要使用C之类的编译语言编写。但即使这样,我也希望库的实现通常会更快,因为人们通常会花时间优化它们。这很有意义,感谢大家的帮助!Python是一个糟糕的研究案例,因为内置/模块函数很可能是用C编写并编译成机器代码的,而Python代码需要解释,这通常要慢几个数量级。是的,C。一般来说,比较C代码和Python代码就像比较保时捷和自行车一样。即使你走同样的路线,保时捷也可能更快到达那里。因此,如果我将代码编译成.exe,速度也会一样?@Chessnut你无法将Python代码编译成机器代码(在某种程度上,除了numby
,cython
等例外)。您需要使用C之类的编译语言编写。但即使这样,我也希望库的实现通常会更快,因为人们通常会花时间优化它们。这很有意义,感谢大家的帮助!
import numpy as py
array = np.random.normal(100, 5, 10000000)
def partition(arr,low,high):
i = ( low-1 )
pivot = arr[high]
for j in range(low , high):
if arr[j] <= pivot:
i = i+1
arr[i],arr[j] = arr[j],arr[i]
arr[i+1],arr[high] = arr[high],arr[i+1]
return ( i+1 )
def quickSort(arr,low,high):
if low < high:
pi = partition(arr,low,high)
quickSort(arr, low, pi-1)
quickSort(arr, pi+1, high)
quickSort(array, 0, len(array)-1)
print("done")