Merge Sort:

 def Merge(left,right,A):
    i=j=k=0
    nl = len(left)
    nr = len(right)
    while(i<nl and j<nr):
        if left[i]<=right[j]:
            A[k] = left[i]
            k+=1
            i+=1
        else:
            A[k] = right[j]
            k+=1
            j+=1
    while i<nl:
        A[k] = left[i]
        k+=1
        i+=1
    while j<nr:
        A[k] = right[j]
        k+=1
        j+=1
    return A


def MergeSort(A):
    n = len(A)
    if n<2:
        return
    mid = n/2
    left = A[:mid]
    right = A[mid:]

    MergeSort(left)
    MergeSort(right)
    Merge(left,right,A)

A=[4,5,3,2,1]
MergeSort(A)
print A

Time Complexity: O(n logn)

results matching ""

    No results matching ""