归并排序
归并排序的思路是先把列表分为多个(这里分为2个),然后分别对这两个子列表进行排序,当两个子列表有序之后,把他们再合并起来,这样结果就也是有序的了
#python3代码
#归并排序
def my_sort(arr,l,r):
if r - l <= 1:
return arr[l:r]
mid = l + (r-l)//2
def hebing(l,r):
'''
合并
'''
result = []
while True:
a = l[0] if len(l) > 0 else float("inf")
b = r[0] if len(r) > 0 else float("inf")
print(f"a:{a},b:{b}")
if a == b == float("inf"):
break
elif a < b:
l.pop(0)
result.append(a)
else:
r.pop(0)
result.append(b)
return result
ll = my_sort(arr,l,mid)
rr = my_sort(arr,mid,r)
rel = hebing(ll,rr)
return rel
if __name__ == "__main__":
#a = [1,5,2,4,6,7,2,10,23,44,5,2,4,3]
a = [55,623,232,34,2,35,123,23,52,342,35,236,23,52342,35,23,52,35,23,452,35,23,52,34,23,42,34,23]
rel = my_sort(a,0,len(a)-1)
print(f"result:{rel}")