python - 打印归并排序的中间步骤
问题描述
我必须在 python 中实现合并排序算法,并且必须在打印排序数组之前打印中间步骤。我已经成功实现了归并排序并获得了排序后的数组,但我无法按以下顺序获得中间步骤:[输出][1]
到目前为止,我的代码是:
import sys
def mergeSort(arr):
if len(arr) > 1:
# Finding the mid of the array
mid = len(arr) // 2
# Dividing the array elements
# into left halve
L = arr[:mid]
# into right halves
R = arr[mid:]
# Recursively calling mergesort till 1 element remains
mergeSort(L)
mergeSort(R)
i = j = k = 0
# Copy data to temp arrays L[] and R[]
while i < len(L) and j < len(R):
# if left element less than right
if L[i] < R[j]:
# update main array with left element
arr[k] = L[i]
i += 1
else:
# else update main array with left element
arr[k] = R[j]
j += 1
k += 1
# Checking if any element was left
while i < len(L):
arr[k] = L[i]
i += 1
k += 1
while j < len(R):
arr[k] = R[j]
j += 1
k += 1
def printList(arr):
for i in range(len(arr)):
print(arr[i], end=" ")
print()
if __name__ == '__main__':
# read file from cmd
with open(sys.argv[1], 'r') as f:
contents = f.read().split()
arr = []
# storing the array in list
for i in contents:
arr.append(int(i))
# printing the unsorted array
printList(arr)
# merge sort function called
mergeSort(arr)
print()
# printing the sorted array
printList(arr)
请帮助我完成这项任务。[1]:https ://i.stack.imgur.com/7GNgl.png
解决方案
推荐阅读
- forms - 单击列表视图项 Xamarin 表单时我无法调用命令
- sql - 为什么选择不同存储的'As T'以及如何别名?
- javascript - 当应用程序在后台运行时反应本机电源按钮长按监听器
- python - 在 Python 中使用给定的 P50 和 STD 计算 P75/P90 值
- docker - docker build 输出的目的是什么?
- corda - 如何在 R3 Corda 的账户之间转移不可替代的代币?
- python - 在 HTML 中组合头部、主体和页脚(或使用 CSS?)
- sql - 从 PgAdmin 中的文本列中选择不同的值
- java - com.android.ddmlib.InstallException:设备离线
- python - IndexError:循环时列表索引超出范围