首页 > 解决方案 > 为什么这不是选择排序算法

问题描述

我正在尝试做选择排序算法,但我无法弄清楚我错过了什么。下面给出两个代码 Code 1 ,我尝试使用索引访问值并且它有效

代码 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)

标签: pythonlistalgorithmselection-sort

解决方案


index_1 = arr.index(x)
index_2 = arr.index(min_ele)

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

但不知何故这有效


推荐阅读