# 归并排序 # 归并排序对列表分为两个部分排序 list = [2, 4, 1, 5, 3, 6, 8, 7, 9, 0] # 一次合并 def Merge(a,start,mid,end): tmp = [] l = start r = mid+1 while l <= mid and r <= end: # 比较大小,添加元素到临时列表 if a[l] <= a[r]: tmp.append(a[l]) l += 1 else: tmp.append(a[r]) r += 1 tmp.extend(a[l:mid+1]) # 添加剩余元素到临时列表中 tmp.extend(a[r:end+1]) for i in range(start, end+1): # 临时列表复制到源列表中 a[i] = tmp[i-start] print(start, end, tmp) # 递归 def MergeSort(a, start, end): # 利用递归实现列表排序 if start == end: return mid = (start+end)//2 MergeSort(a, start, mid) MergeSort(a, mid+1, end) Merge(a, start, mid, end) MergeSort(list, 0, 9)
Python归并排序
最新推荐文章于 2024-09-04 19:04:43 发布