我将帮你实现归并排序算法。
归并排序是一种高效的排序算法,采用分治策略,将待排序的序列分成两个或两个以上子序列,然后对子序列进行排序,最后再将排好序的子序列合并成整体有序序列。归并排序是一种效率高且稳定的算法,它的时间复杂度为 O ( n l o g n ) O(nlogn) O(nlogn),空间复杂度为 O ( n ) O(n) O(n)。
以下是一个简单的示例,使用 Python 实现归并排序算法对一个整数列表进行排序,代码如下:
def merge_sort(lists):
"""
使用归并排序算法对列表进行排序
"""
if len(lists) <= 1:
return lists
# 计算中点,用于将列表拆分成两半
mid = int(len(lists) / 2)
# 对列表的前半部分进行归并排序
left_half = merge_sort(lists[:mid])
# 对列表的后半部分进行归并排序
right_half = merge_sort(lists[mid:])
return merge(left_half, right_half)
def merge(left_half, right_half):
"""
合并两个有序列表
"""
# 初始化两个指针,分别指向左右列表的起始位置
left_index, right_index = 0, 0
merged_list = []
# 遍历左右列表,将较小的元素依次添加到结果列表中
while left_index < len(left_half) and right_index < len(right_half):
if left_half[left_index] <= right_half[right_index]:
merged_list.append(left_half[left_index])
left_index += 1
else:
merged_list.append(right_half[right_index])
right_index += 1
# 将剩余的元素添加到结果列表中
merged_list.extend(left_half[left_index:])
merged_list.extend(right_half[right_index:])
return merged_list
你可以使用以下方式调用这个函数:
print(merge_sort([1, 3, 9, 23, 45, 89, 55, 32, 12, 100]))
上述示例中,merge_sort
函数是一个递归函数,它不断地将列表分成两半并对每一半递归地调用自己,直到分到只有一个或没有元素。merge
函数负责将两个已排序的列表合并成一个有序列表。
需要注意的是,上述代码仅为一个简单的示例,你需要将测试数据替换为你自己的真实数据。