前两天我们分享了 Java 实现快速排序算法和冒泡排序算法,不知道大家都学到了吗?
为了照顾到每位同学,今天我们用 Python 实现下另外一种算法 — 归并排序算法。
首先来介绍下归并排序,归并排序是一种分治算法,它将数组分为两半,分别对它们进行排序,然后将排序后的两个子数组合并成一个有序数组。
Python 实现归并排序算法示例代码:
def merge_sort(arr):
if len(arr) > 1:
mid = len(arr) // 2
left_half = arr[:mid]
right_half = arr[mid:]
merge_sort(left_half)
merge_sort(right_half)
i = j = k = 0
while i len(left_half) and j len(right_half):
if left_half[i] arr[k] = left_half[i]
i += 1
else:
arr[k] = right_half[j]
j += 1
k += 1
while i len(left_half):
arr[k] = left_half[i]
i += 1
k += 1
while j len(right_half):
arr[k] = right_half[j]
j += 1
k += 1
arr = [12, 11, 13, 5, 6, 7]
merge_sort(arr)
print("排序后的数组:", arr)
运行上述程序,输出结果为:
排序后的数组:[5, 6, 7, 11, 12, 13]
在这个例子中,我们首先将数组分为两半,然后递归地对每一半进行归并排序。接着,我们将两个已排序的子数组合并成一个有序数组。
归并排序的时间复杂度为 O(n log n),在最坏、平均和最好情况下都保持这个性能,这使得它在处理大数据集时非常有效。
今天的代码大赏就到这里。希望通过这篇文章,你能够对归并排序算法有一个更深入的理解。
如果大家还想看更多的不同语言实现不同的算法,欢迎在评论区留下自己的评论。
完整代码片段来源于代码小抄,欢迎点击进入小程序阅读!
在线访问:https://www.codecopy.cn/post/yq85h0
在代码小抄可以看到更多优质代码,也欢迎大家积极分享,可能会获得我们官方的小礼品 🎁~