归并排序思想:归并排序的思想是分治思想,就是把问题分成若干子问题,再子问题里面递归进行处理,然后返回原问题的解
归并排序原理:1.切分:将数组分成两部分,mid=len(arr)//2,切分到子数组只有一个元素的时候就进行第二步
2.归并:创建一个空数组,将两个子数组的元素一个一个的进行比较,小的元素先加入空数组,最后将还有剩余元素的子数组的元素全部加到空数组里面
l = [5, 13, 26, 25, 15, 20, 65, 51, 41]
def merge_sort(li):
if len(li) <= 1:
return li
length = len(li)
m = length//2
# if i >= j:
left = li[:m]
right = li[m:]
# 下面这两部很关键
ll = merge_sort(left)
rl = merge_sort(right)
data = merge(ll, rl)
return data
def merge(lst1, lst2):
lst3 = []
count1, count2 = 0, 0
while count1 < len(lst1) and count2 < len(lst2):
if lst1[count1] < lst2[count2]:
lst3.append(lst1[count1])
count1 += 1
else:
lst3.append(lst2[count2])
count2 += 1
while count1 < len(lst1):
lst3.append(lst1[count1])
count1 += 1
while count2 < len(lst2):
lst3.append(lst2[count2])
count2 += 1
return lst3
hwq = merge_sort(l)
print(hwq)