返回工具主页

归并排序可视化

通过分治策略:将数组递归分裂成两半,直到单个元素,然后逐层合并两个有序数组。观察分裂与合并过程。

时间复杂度:O(n log n) | 稳定排序

300ms
0
比较次数
0
合并次数
0
递归深度
def merge_sort(arr, left, right):
if left >= right:
return
mid = (left + right) // 2
merge_sort(arr, left, mid)
merge_sort(arr, mid + 1, right)
merge(arr, left, mid, right)
def merge(arr, left, mid, right):
temp = []
i, j = left, mid + 1
while i <= mid and j <= right:
if arr[i] <= arr[j]:
temp.append(arr[i])
i += 1
else:
temp.append(arr[j])
j += 1
temp.extend(arr[i:mid+1])
temp.extend(arr[j:right+1])
for k in range(len(temp)):
arr[left + k] = temp[k]