# coding=utf-8
def merge_sort(array):
merge_sort_helper(array, 0, len(array) - 1)
def merge_sort_helper(array, left, right):
if left >= right:
return
mid = (left + right) // 2
merge_sort_helper(array, left, mid)
merge_sort_helper(array, mid + 1, right)
merge(array, left, right)
def merge(array, left, right):
mid = (left + right) // 2
n = right - left + 1
i, j = left, mid + 1
tmp = [0 for i in range(0, n)]
for k in range(0, n):
if i <= mid and (j > right or array[i] <= array[j]):
tmp[k] = array[i]
i += 1
else:
tmp[k] = array[j]
j += 1
for k in range(0, n):
array[left + k] = tmp[k]
'''
def merge_sort(array):
tmp = [0 for i in range(0, len(array))]
merge_sort_helper(array, 0, len(array) - 1, tmp)
def merge_sort_helper(array, left, right, tmp):
if left >= right:
return
mid = (left + right) // 2
merge_sort_helper(array, left, mid, tmp)
merge_sort_helper(array, mid + 1, right, tmp)
merge(array, left, right, tmp)
def merge(array, left, right, tmp):
mid = (left + right) // 2
n = right - left + 1
i, j = left, mid + 1
for k in range(0, n):
if i <= mid and (j > right or array[i] <= array[j]):
tmp[k] = array[i]
i += 1
else:
tmp[k] = array[j]
j += 1
for k in range(0, n):
array[left + k] = tmp[k]
'''
if __name__ == '__main__':
array = [6, 4, 5, 7, 2, 4, 3, 4, 7, 8]
merge_sort(array)
for num in array:
print(num, end=' ')
print()
归并排序
最新推荐文章于 2025-08-14 11:49:44 发布