为什么内置的.sort()函数比手动编码的排序算法更有效?

时间:2019-08-28 09:21:37

标签: python sorting quicksort

我用python编写了有关此问题的代码,但我的问题涉及所有编程语言。

我生成了10,000,000个随机数据点,并对其进行了快速排序。

在我的计算机上,大约花了57秒。

然后我又生成了10,000,000个数据点,并使用内置的.sort()函数对它们进行了排序,这花了大约4秒钟。

为什么差异如此之大? .sort()函数使用什么排序算法?

我认为.sort()使用的排序算法是快速排序,对吗?

下面是我使用的快速排序算法(不是我的代码,我使用它来快速测试它)。

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")

1 个答案:

答案 0 :(得分:2)

默认情况下,Python使用 TIM SORT 作为排序技术。

您可以从https://www.geeksforgeeks.org/timsort/

获得很多信息