当前位置:实例文章 » JAVA Web实例» [文章]【重温篇】八大排序——归并排序

【重温篇】八大排序——归并排序

发布人:shili8 发布时间:2025-01-29 00:16 阅读次数:0

**重温篇**: 八大排序——归并排序在计算机科学中,排序算法是非常重要的概念。它能够帮助我们对一组数据进行有序排列,从而更好地分析和处理这些数据。在本文中,我们将重点介绍一种常见且高效的排序算法——归并排序。

**什么是归并排序**

归并排序是一种分治法(Divide and Conquer)的排序算法。它通过递归地将一组数据分成两个子集,然后分别对这两个子集进行排序,最终合并两个有序的子集来得到最终结果。

**归并排序的步骤**

1. **分割**: 将一组数据分成两个子集。
2. **递归**: 对每个子集重复上述过程,直到子集中的元素只有一个。
3. **合并**: 将两个有序的子集合并起来。

**归并排序的实现**

下面是归并排序的基本实现代码:

def merge_sort(arr):
 # 如果数组长度小于2,则直接返回(因为已经有序)
 if len(arr) < 2:
 return arr # 找到中间索引,将数组分成两个子集 mid = len(arr) //2 left_half = arr[:mid]
 right_half = arr[mid:]

 # 递归对每个子集进行排序 left_half = merge_sort(left_half)
 right_half = merge_sort(right_half)

 # 合并两个有序的子集 return merge(left_half, right_half)


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 = [64,34,25,12,22,11,90]
print("原始数组:", arr)
sorted_arr = merge_sort(arr)
print("排序后数组:", sorted_arr)

**注释**

* `merge_sort` 函数负责对整个数组进行排序。
* `merge` 函数负责合并两个有序的子集。
* `left_half` 和 `right_half` 变量分别存储左半部分和右半部分的元素。
* `left_index` 和 `right_index` 变量用于跟踪当前处理的元素位置。

**总结**

归并排序是一种高效且常见的排序算法。它通过递归地将一组数据分成两个子集,然后分别对这两个子集进行排序,最终合并两个有序的子集来得到最终结果。在本文中,我们介绍了归并排序的基本实现代码,并提供了注释和测试代码,以帮助读者更好地理解这个算法。

其他信息

其他资源

Top