归并排序(Merge Sort)是建立在归并操作上的一种有效、稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
以下是使用 Python 实现归并排序的代码:
# 归并排序函数
def mergeSort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = mergeSort(arr[:mid])
right = mergeSort(arr[mid:])
return merge(left, right)
# 合并两个已排序的子数组为一个已排序的数组
def merge(left, right):
merged = []
left_index = 0
right_index = 0
while left_index < len(left) and right_index < len(right):
if left[left_index] < right[right_index]:
merged.append(left[left_index])
left_index += 1
else:
merged.append(right[right_index])
right_index += 1
merged.extend(left[left_index:])
merged.extend(right[right_index:])
return merged
# 测试示例
arr = [12, 11, 13, 5, 6]
sorted_arr = mergeSort(arr)
print("排序后的数组:", sorted_arr)
在这个示例中,我们首先定义了mergeSort
函数,它采用分治法将数组分为两半,对每一半进行排序,然后合并它们。merge
函数用于合并两个已排序的子数组。最后,我们使用一个示例数组来测试归并排序算法,并输出排序后的结果。
归并排序的时间复杂度为$O(nlogn)$,空间复杂度为$O(n)`。它是一种稳定的排序算法,在实际应用中表现良好。
如果你对归并排序还有其他疑问,或者需要进一步的解释,请随时告诉我。🤗