I have tried to implement the Selection Sort Algorithm in two different ways, and I was just wondering if that is considered to be a valid implementation of that algorithm. Would that be also considered an efficient implementation of the algorithm, or are there different and more efficient ways?
Here are my implementations:
Implementation Attempt #1
def selection_sort(L: List[int]) -> List[int]: for i in range(len(L) - 1): j = i smallest_num = L[i] while j < len(L) - 1: if smallest_num > L[j + 1]: smallest_num = L[j + 1] j += 1 L[L.index(smallest_num)], L[i] = L[i], L[L.index(smallest_num)] return L
Implementation Attempt #2
def selection_sort(L: List[int]): for i in range(len(L) - 1): j = i while j < len(L) - 1: swap_min(L, i) j += 1 return L def swap_min(L: List[int], n: int) -> None: smallet_num = min(L[n:]) sm_indx = L.index(smallet_num) L[n], L[sm_indx] = L[sm_indx], L[n]