使用归并排序数据进行排序 python
时间: 2023-07-05 12:35:53 浏览: 81
当然,我可以为您演示使用归并排序算法对数据进行排序的 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] < right_half[j]:
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 = [64, 34, 25, 12, 22, 11, 90]
merge_sort(arr)
print("排序后的数组:")
print(arr)
```
这段代码中,我们首先使用 `mid = len(arr) // 2` 将数组分成左右两半,然后递归地对左右两半进行排序,直到每个子数组只有一个元素。然后,我们将两个有序的子数组合并成一个有序数组。
在合并子数组时,我们使用三个指针 `i`、`j` 和 `k`,其中 `i` 和 `j` 分别指向左右两个子数组的起始位置,`k` 指向合并后的数组的第一个位置。我们将两个子数组中较小的元素放入合并后的数组中,并将相应的指针向右移动,直到其中一个子数组的元素全部放入合并后的数组中。然后,我们将另一个子数组中剩余的元素放入合并后的数组中。
最后,我们用给定的数组测试代码,并使用 `print()` 语句输出排序后的数组。
阅读全文