首页 > 解决方案 > 为什么内置的 .sort() 函数比手动编码的排序算法更有效?

问题描述

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

标签: pythonsortingquicksort

解决方案


Python 默认TIM SORT用作排序技术。

您可以从https://www.geeksforgeeks.org/timsort/获得很多信息


推荐阅读