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 [ ]: