首页 > 解决方案 > 打印归并排序的中间步骤

问题描述

我必须在 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

标签: pythonarraysrecursionmergesort

解决方案


推荐阅读