import numpy as np
def sort_process(arr, l, r):
if l == r:
return
middle = l + (r - l) // 2
sort_process(arr, l, middle)
sort_process(arr, middle + 1, r)
merge_sort(arr, l, middle, r)
def merge_sort(arr, l, middle, r):
i = 0
p1 = l
p2 = middle + 1
help_p = np.empty(2)
while p1 <= middle and p2 <= r:
if arr[p1] <= arr[p2]:
help_p[i] = arr[p1]
i += 1
p1 += 1
else:
help_p[i] = arr[p2]
i += 1
p2 += 1
while p1 <= middle:
help_p[i] = arr[p1]
i += 1
p1 += 1
while p2 <= r:
help_p[i] = arr[p2]
i += 1
p2 += 1
for i in range(r - l + 1):
arr[l + i] = int(help_p[i])
return arr
array_ex = [np.random.randint(0, 100) for i in range(20)]
print('array_ex_first:', array_ex)
length = len(array_ex) - 1
sort_process(array_ex, 0, length)
print('array_ex_second:', array_ex)
python归并排序
最新推荐文章于 2024-04-29 21:50:55 发布