我从博客中获取了这个合并排序示例。我刚刚开始学习合并排序,我想检查它的速度与python的默认排序算法相比。使用短随机生成列表并不是很明显,但是有一个大的列表,比如一个拥有1,000,000个整数的列表,大约需要10秒,而python的默认排序算法甚至不会接近1秒。
import random
import time
def mergeSort(alist):
if len(alist)>1:
mid = len(alist)//2
lefthalf = alist[:mid]
righthalf = alist[mid:]
mergeSort(lefthalf)
mergeSort(righthalf)
i=0
j=0
k=0
while i < len(lefthalf) and j < len(righthalf):
if lefthalf[i] < righthalf[j]:
alist[k]=lefthalf[i]
i=i+1
else:
alist[k]=righthalf[j]
j=j+1
k=k+1
while i < len(lefthalf):
alist[k]=lefthalf[i]
i=i+1
k=k+1
while j < len(righthalf):
alist[k]=righthalf[j]
j=j+1
k=k+1
array = [random.randint(0,1000) for a in range(0,10000)]
#print "original random generated array:",array
start = time.clock()
sorted_array = mergeSort(array)
#print "\nSorted array: ", sorted_array
print "Time: ", str(time.clock() - start)
start1 = time.clock()
array = array.sort()
print "Time: ", str(time.clock() - start1)
答案 0 :(得分:1)
Python很适合很多东西,但与许多其他语言相比,它的运行速度非常慢。典型Python发行版中的内置函数是用C语言编写的,比同等的Python代码快得多。