- Iterative Method to Implement Selection Sort in Python
- Recursive Method to Implement Selection Sort in Python
This article discusses the selection sort algorithm and how to implement it in Python.
Selection sort is one of the algorithms for sorting small-sized data structures. A basic comparison-based algorithm can divide the given array into two parts: the
sorted part (left) and the
unsorted part (right).
The algorithm aims to find the element with the minimum value from the
unsorted part and sends it to the
sorted part. This process is repeated until the
unsorted part of the given array contains no elements.
throughout the run of the selection sort algorithm, the given array is divided into two subarrays:
- One subarray contains all the sorted elements.
- Another subarray contains all the unsorted elements that are yet to be checked.
There are two approaches to implement the selection sort algorithm:
iterative selection sort and
recursive selection sort.
Iterative Method to Implement Selection Sort in Python
A simple iterative approach can be utilized to execute selection sort in Python.
This method takes one element with the smallest value from the unsorted sub-array and puts it into the sorted sub-array in every iteration of the
Sample code using the iterative method to implement selection sort in Python.
def selectionSort(array, size): for step in range(size): min_a = step for i in range(step + 1, size): if array[i] < array[min_a]: min_a = i (array[step], array[min_a]) = (array[min_a], array[step]) X = [45, 22, 18, 32, 49] size = len(X) selectionSort(X, size) print('Sorted Array is:') print(X)
Sorted Array is: [18,22,32,45,49]
Recursive Method to Implement Selection Sort in Python
The recursion process is another method to do selection sort in Python. We create a function that calls for the unsorted part recursively under itself.
Sample code that uses the recursive method to implement selection sort in Python.
def minIndex( a , x , y ): if x == y: return x z = minIndex(a, x + 1, y) return (x if a[x] < a[z] else z) def RSS(a, n, index = 0): if index == n: return -1 z = minIndex(a, index, n-1) if z != index: a[z], a[index] = a[index], a[z] RSS(a, n, index + 1) l1 = [5, 7, 2, 4, 6] n = len(l1) RSS(l1, n) for x in l1: print(x, end = ' ')
2 4 5 6 7