我实现的合并排序不起作用

时间:2018-08-02 09:23:06

标签: python python-3.x sorting mergesort

我一直在python中实现合并排序,而没有创建额外的变量来减少空间复杂度。这是我的尝试。

我的基本合并排序逻辑如下所示,它包含两个功能:-

  1. mergeSort。

  2. 合并

它们的代码如下所示:-

def mergeSort(A, start_index, end_index):
    if ((len(A)) > 1):
        middle = math.floor((start_index + end_index) / 2)
        mergeSort(A[start_index:middle], start_index, middle)
        mergeSort(A[middle:end_index], middle, end_index)
        merge(A[start_index:middle], A[middle: end_index], A)
        #Create a new empty list for array to merge

我的合并逻辑如下所示:-

def merge(U, V, A):   

    m = len(U) - 1
    n = len(V) - 1

    U.append(inf)
    V.append(inf)

    i = j = k = 0

    while(k <= (m + n + 1)):

        if(U[i] < V[j]):
            A[k] = U[i]
            i += 1

        else:
            A[k] = V[j]
            j += 1


        k += 1

我已将A = [5,4,3,2,1]传递为mergeSort的输入。作为mergeSort(A,0,4),现在的输出令人惊讶地为[3,2,5,4,1]。

1 个答案:

答案 0 :(得分:0)

我不允许发表评论,但您应该在代码的第一个函数mergeSort中添加

If (start_index < end_index) :