Python实现归并排序算法
归并排序是一种分治算法,它将一个大问题分成若干个小问题,分别解决这些小问题,最终将这些小问题的解合并成一个大问题的解。归并排序的基本思路是将数组分成两个部分,对这两个部分分别排序,然后将这两个有序的部分归并到一起。
以下是Python实现归并排序算法的完整代码:
def merge_sort(arr): # 如果数组中只有一个元素,直接返回 if len(arr) <= 1: return arr # 分成两个部分 mid = len(arr) // 2 left = arr[:mid] right = arr[mid:] # 分别对左右两个部分进行排序 left = merge_sort(left) right = merge_sort(right) # 合并左右两个部分 return merge(left, right) def merge(left, right): # 初始化结果数组和左右两个子数组的起始下标 result = [] i = j = 0 # 循环合并左右两个子数组 while i < len(left) and j < len(right): if left[i] < right[j]: result.append(left[i]) i += 1 else: result.append(right[j]) j += 1 # 将剩余的元素加入结果数组 result += left[i:] result += right[j:] # 返回结果数组 return result
上面的代码中,merge_sort
函数实现了归并排序的算法。如果数组中只有一个元素,直接返回该元素;否则分成两个部分,分别对这两个部分进行排序,然后将这两个有序的部分归并到一起,并返回结果数组。merge
函数实现了合并两个有序数组的功能,result
数组是合并后的结果数组,i
和 j
分别表示左右两个子数组的起始下标,循环合并左右两个子数组并加入 result
数组中,最终返回结果数组。
下面是对此函数的使用示例:
arr = [3, 5, 1, 4, 2, 6] sorted_arr = merge_sort(arr) print(sorted_arr) # 输出 [1, 2, 3, 4, 5, 6]
在上面的示例中,我们定义了一个数组 arr
,并将其传入 merge_sort
函数中进行排序,最终输出排序后的结果数组。
相关文章