def mergesort(nums): #利用python写一个归并排序方式(这里采用递归的思想)
if len(nums) == 1: #递归的基本结束条件 当输入的列表的长度为一时,则直接返回
return nums
gap = len(nums) // 2 #gap表示一个列表的中间值
left = mergesort(nums[0:gap]) #把一个列表拆分成两个部分left和right
right = mergesort(nums[gap:])
return merge(left, right) #把刚才拆分好的列表放入merge函数中进行合并
def merge(left, right):
l, r = 0, 0 #定义两个指针
arry = []
while l < len(left) and r < len(right):#循环条件是当l的值小于left的长度时循环,right同理
if left[l] < right[r]: #如果左边的数小于右边的数则放入列表arry中,否则右边放入arry中
arry.append(left[l])
l += 1
else:
arry.append(right[r])
r += 1
arry += left[l:] #将left或right列表剩余的数字和列表arry进行合并
arry += right[r:]
return arry #返回排好序的列表
result2 = mergesort([5, 9, 6, 3, 2, 5, 8, 4, 1, 0])
print(result2)
用python写一个归并排序
最新推荐文章于 2024-06-21 17:14:10 发布