merge sort python
时间: 2023-11-09 10:01:05 浏览: 85
下面是 Python 实现的归并排序代码:
```python
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
return merge(left, right)
def merge(left, right):
result = []
i, j = 0, 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 python实现
merge sort是一种常见的排序算法,它的主要思想是将一个大的序列分成两个子序列,然后对这两个子序列分别进行排序,最后将排好序的子序列合并成一个有序的序列。在Python中,merge sort的实现方式有很多种,这里提供两种实现方式。
第一种实现方式是使用递归的方式实现merge sort。这种实现方式的核心思想是将一个序列不断地拆分成两个子序列,直到每个子序列只有一个元素,然后再将这些子序列合并成一个有序的序列。具体实现可以参考引用中的代码。
第二种实现方式是使用迭代的方式实现merge sort。这种实现方式的核心思想是使用一个循环来不断地将序列拆分成两个子序列,然后再将这些子序列合并成一个有序的序列。具体实现可以参考引用中的代码。
python merge sort
Merge sort is a sorting algorithm that uses the divide and conquer technique. It works by dividing the unsorted list into n sublists, each containing one element, and then repeatedly merging sublists to produce new sorted sublists until there is only one sublist remaining. Here's a Python implementation of merge sort:
```
def merge_sort(arr):
# base case
if len(arr) <= 1:
return arr
# divide the list into two halves
mid = len(arr) // 2
left_half = arr[:mid]
right_half = arr[mid:]
# recursively sort the two halves
left_half = merge_sort(left_half)
right_half = merge_sort(right_half)
# merge the sorted halves
sorted_arr = []
i = j = 0
while i < len(left_half) and j < len(right_half):
if left_half[i] <= right_half[j]:
sorted_arr.append(left_half[i])
i += 1
else:
sorted_arr.append(right_half[j])
j += 1
sorted_arr += left_half[i:]
sorted_arr += right_half[j:]
return sorted_arr
```
To use the merge_sort function, simply pass in an unsorted list:
```
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_list = merge_sort(my_list)
print(sorted_list)
```
This will output the sorted list:
```
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
```
阅读全文