Почему это не алгоритм сортировки выбора - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь выполнить алгоритм сортировки выбора, но не могу понять, что мне не хватает. ниже приведены два кода Code 1, я пробовал получить доступ к значениям с индексом, и он работает

Code 1:

arr = [20,11,64,28,80,64,61,58,23,50,55,21,34,76,39,29,15,66,13,91,74,51]
for i in range(len(arr)):
    min_ele = i
    for j in range(i,len(arr)):
        if arr[min_ele] > arr[j]:
            min_ele = j


    arr[i],arr[min_ele] = arr[min_ele],arr[i]

print(arr)

Но код 2, я думаю, что то, что я пытался, в основном то же самое . Я сравниваю значения, а затем беру их индексы и обмениваюсь друг с другом, но каким-то образом массив вообще не меняется, и я не могу понять, что мне не хватает

Код 2:

arr = [20,11,64,28,80,64,61,58,23,50,55,21,34,76,39,29,15,66,13,91,74,51]
for x in arr:
    min_ele = x
    for xx in arr[arr.index(x):len(arr)]:
        if min_ele > xx:
            min_ele = xx

    arr[arr.index(x)],arr[arr.index(min_ele)] = arr[arr.index(min_ele)],arr[arr.index(x)]

print(arr)

1 Ответ

0 голосов
/ 06 мая 2020
index_1 = arr.index(x)
index_2 = arr.index(min_ele)

arr[index_1],arr[index_2] = arr[index_2],arr[index_1]

но так или иначе работает

...