Sort implementation¶

Implement selection sort:¶

In [ ]:
def selection_sort(arr):
    """ sort the given array in-place (by swapping elements) using selection sort and return it"""
    n = len(arr)
    for i in range(0, n-1):
        for j in range(i+1, n):
            if arr[j] < arr[i]:
                swap = arr[i]
                arr[i] = arr[j]
                arr[j] = swap
    return arr
In [ ]:
# check your implementation:
a=[5]
print (a, end=" -> ")
print (selection_sort(a))

a=[1,7,2,8,7]
print (a, end=" -> ")
print (selection_sort(a))

a=[4,3,2,1]
print (a, end=" -> ")
print (selection_sort(a))

a=[1,2,3,4]
print (a, end=" -> ")
print (selection_sort(a))

a=[]
print (a, end=" -> ")
print (selection_sort(a))
[5] -> [5]
[1, 7, 2, 8, 7] -> [1, 2, 7, 7, 8]
[4, 3, 2, 1] -> [1, 2, 3, 4]
[1, 2, 3, 4] -> [1, 2, 3, 4]
[] -> []

Implementation of merge sort.¶

In [ ]:
def merge(left, right):
    # merge the two arrays into a sorted array assuming
    # left and right are already sorted individually
    result = []
    leftSize = len(left)
    rightSize = len(right)
    i = 0
    j = 0
    while i < leftSize and j < rightSize:
        if left[i] <= right[j]:
            result.append(left[i])
            i = i + 1
        else:
            result.append(right[j])
            j = j + 1
    for k in range(i,leftSize):
        result.append(left[k])
    for k in range(j,rightSize):
        result.append(right[k])
    return result
                
def merge_sort(arr):
    # sort recursively using merge-sort
    if len(arr) < 2:
        return arr
    mid = len(arr)//2
    left = merge_sort(arr[0:mid])
    right = merge_sort(arr[mid:len(arr)])
    result = merge(left,right)
    return result
In [ ]:
# check your implementation:
a=[5]
print (a, end=" -> ")
print (merge_sort(a))

a=[1,7,2,8,7]
print (a, end=" -> ")
print (merge_sort(a))

a=[4,3,2,1]
print (a, end=" -> ")
print (merge_sort(a))

a=[1,2,3,4]
print (a, end=" -> ")
print (merge_sort(a))

a=[]
print (a, end=" -> ")
print (merge_sort(a))
[5] -> [5]
[1, 7, 2, 8, 7] -> [1, 2, 7, 7, 8]
[4, 3, 2, 1] -> [1, 2, 3, 4]
[1, 2, 3, 4] -> [1, 2, 3, 4]
[] -> []
In [ ]: