为什么这不是选择排序算法

问题描述 投票:-1回答:1

我正在尝试执行选择排序算法,但是我无法弄清楚我缺少什么。下面给出两个代码代码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)
python list algorithm selection-sort
1个回答
0
投票
index_1 = arr.index(x)
index_2 = arr.index(min_ele)

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

但是以某种方式有效

© www.soinside.com 2019 - 2024. All rights reserved.