import random
import time
def mergeSort(arr,left,right):
if left<right:
mid=int((left+right)/2)
mergeSort(arr,left,mid)
mergeSort(arr,mid+1,right)
merge(arr,left,mid,right)
def merge(arr,left,mid,right):
tempArr=[None]*len(arr)
for k in range(left,right+1):
tempArr[k]=arr[k]
i=left
j=mid+1
for k in range(left,right+1):
if i>mid:
arr[k]=tempArr[j]
j+=1
elif j>right:
arr[k]=tempArr[i]
i+=1
elif tempArr[i]<=tempArr[j]:
arr[k]=tempArr[i]
i+=1
else :
arr[k]=tempArr[j]
j+=1
def test1():
arr=[random.randint(0,99) for _ in range(0,15)]
print(arr)
mergeSort(arr,0,len(arr)-1)
print(arr)
def test2():
arr=[random.randint(0,50000) for _ in range(0,50000)]
start=time.time()
print("start:",start)
mergeSort(arr,0,len(arr)-1)
end =time.time()
print("end:",end)
print("cost time:",end-start,"秒")
if __name__=="__main__":
# test1()
# cost time: 3.3665807247161865
test2()
test1()
[69, 23, 45, 92, 63, 10, 36, 58, 68, 46, 29, 60, 58, 4, 42]
[4, 10, 23, 29, 36, 42, 45, 46, 58, 58, 60, 63, 68, 69, 92]
start: 1710336046.7357512
end: 1710336050.9680343
cost time: 4.232283115386963 秒