You are on page 1of 2

WEEK4

Task1:
#MERGE SORT
def mergesort(A,p,r):
    if p<r:
        q=(p+r)//2
        mergesort(A,p,q)
        mergesort(A,q+1,r)
        merge(A,p,q,r)
    return A
def merge(A,p,q,r):
    n1=q-p+1
    n2=r-q
    l,R=[],[]
    for i in range(0,n1):
        l.append(A[i+p])
    for j in range(0,n2):
        R.append(A[j+q+1])
    l.append(1000001)
    R.append(100000)
    i=j=0
    for k in range(p,r+1):
        if l[i]<R[j]:
            A[k]=l[i]
            i+=1
        else:
            A[k]=R[j]
            j+=1
    return A
a=list(map(int,input().split()))
p,r=0,len(a)-1
print(mergesort(a,p,r))

#MERGE SORT FOR STRINGS


def mergesort(A,p,r):
    if p<r:
        q=(p+r)//2
        mergesort(A,p,q)
        mergesort(A,q+1,r)
        merge(A,p,q,r)
    return A
def merge(A,p,q,r):
    n1=q-p+1
    n2=r-q
    l,R=[],[]
    for i in range(0,n1):
        l.append(A[i+p])
    for j in range(0,n2):
        R.append(A[j+q+1])
    l.append("zzzzz")
    R.append("zzzzzz")
    i=j=0
    for k in range(p,r+1):
        if l[i]<R[j]:
            A[k]=l[i]
            i+=1
        else:
            A[k]=R[j]
            j+=1
    return A
a=list(map(str,input().split()))
p,r=0,len(a)-1
print(mergesort(a,p,r))

Task2:
#QUICKSORT::
def part(p,r):
    pivot=a[r]
    i=p-1
    for j in range(p,r):
        if pivot>=a[j]:
            i+=1
            a[i],a[j]=a[j],a[i]
    a[i+1],a[r]=a[r],a[i+1]
    return i+1
def quicksort(p,r):
    if p<r:
        q=part(p,r)
        quicksort(p,q-1)
        quicksort(q+1,r)
a=list(map(int,input().split()))
p,r=0,len(a)-1
quicksort(p,r)
print(a)

You might also like