Python selection sort
Selection sort scans the unsorted suffix for a minimum, then exchanges it with the first position in that suffix.
Python
def selection_sort(values):
result = values.copy()
for i in range(len(result)):
smallest = i
for j in range(i + 1, len(result)):
if result[j] < result[smallest]:
smallest = j
result[i], result[smallest] = result[smallest], result[i]
return result
print(selection_sort([3, 1, 2]))
assert selection_sort([]) == []
assert selection_sort([2, 2, 1]) == [1, 2, 2]