思想:先递归分解数组,再合并数组
代码:
def merge_sort(alist):
n=len(alist)
if n<=1:
return alist
mid=n//2
left_li=merge_sort(alist[:mid])
right_li=merge_sort(alist[mid:])
left_pointer,right_pointer=0,0
result=[]
while left_pointer<len(left_li) and right_pointer<len(right_li):
if left_li[left_pointer]<=right_li[right_pointer]:
result.append(left_li[left_pointer])
left_pointer+=1
else:
result.append(right_li[right_pointer])
right_pointer+=1
result+=left_li[left_pointer:]
result+=right_li[right_pointer:]
return result
最优时间复杂度:O(nlogn)
最差时间复杂度:O(nlogn)
稳定性:稳定
本文深入讲解了归并排序算法的实现原理,通过递归分解数组为更小的部分,然后将这些部分合并为有序数组。文章提供了详细的Python代码实现,并分析了算法的时间复杂度和稳定性。
631

被折叠的 条评论
为什么被折叠?



