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]