python实现
import datetime
import random
arr = [random.randint(0, 1000000) for x in range(500000)]
tempList = [0] * len(arr)
def mergeSort(arr, left, right, temp):
if left < right:
mid = (left + right) // 2
# 左边递归
mergeSort(arr, left, mid, temp)
# 右边递归
mergeSort(arr, mid + 1, right, temp)
# 合并
merge(arr, left, mid, right, temp)
def merge(arr, left, mid, right, temp):
i = left
j = mid + 1
t = 0
while i <= mid and j <= right:
if arr[i] <= arr[j]:
temp[t] = arr[i]
i += 1
t += 1
else:
temp[t] = arr[j]
j += 1
t += 1
# 将剩下的存入temp中
while i <= mid:
temp[t] = arr[i]
i += 1
t += 1
while j <= right:
temp[t] = arr[j]
j += 1
t += 1
t = 0
while left <= right:
arr[left] = temp[t]
t += 1
left += 1
start = datetime.datetime.now().timestamp()
mergeSort(arr, 0, len(arr) - 1, tempList)
end = datetime.datetime.now().timestamp()
print(f"总共花了{int(end - start)}s")