python - 为什么这不是选择排序算法
问题描述
我正在尝试做选择排序算法,但我无法弄清楚我错过了什么。下面给出两个代码 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)
解决方案
index_1 = arr.index(x)
index_2 = arr.index(min_ele)
arr[index_1],arr[index_2] = arr[index_2],arr[index_1]
但不知何故这有效
推荐阅读
- docker - 如何拥有多个版本的pdfinfo?
- sql - 将数据从 S3 导入 Redshift 时的 SUPER 数据类型解析
- java - 如何将不同类的三个线程同步到一起
- javascript - 如何在另一个公会中担任角色并在新公会 Discord.js v.12 中获得排名
- python - 获取挂起的更改列表
- mysql - TypeORM 抛出 QueryFailedError ER_TABLE_EXISTS_ERROR: MySQL 中已经存在表'courses'
- android - 堆分析插件和 Android Gradle 插件 4.2+
- react-native - 播放 Lottie 库的特定动画并跳过 React Native 中的其他部分
- math - 半对数刻度图上的直线通过两点的方程
- python - 变量作为后缀?