Я выяснил, что проблема вызвана list_1.index (val), потому что каждый раз, когда он будет искать val в начале списка, для решения этой проблемы достаточно использовать второй параметр, такой как list_1.index (val , начало)
def selection_sort(list_1):
for i in range(len(list_1)):
val = min(list_1[i:])
temp = list_1[i]
list_1[list_1.index(val, i)], list_1[i] = temp, val
print (list_1)
selection_sort([3,3,4,3,465,45,346,5,456,346,456,545,345345,345])
результат равен [3, 3, 3, 4, 5, 45, 345, 346, 346, 456, 456, 465, 545, 345345]