马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 jcpython2 于 2022-10-12 10:11 编辑
思路是不断缩减min的范围,把每次循环到的最小值替换到第一个值
- a= [4,5,7,4,3,6,8,9,5,8,5,7,4,34,3]
- for i in range(len(a)):
- minV = min(a[i:]) #最小值
- minI = a[::].index(minV) #最小值位置
- nowV = a[i] #现值
- nowI = a.index(nowV) #现值位置
- a[i],a[minI] = a[minI],a[i] #现值最小值互换
- print(a)
复制代码
逻辑错在哪一步?
本帖最后由 jackz007 于 2022-10-12 10:52 编辑
再试试这个
- a = [4,5,7,4,3,6,8,9,5,8,5,7,4,34,3]
- for i in range(len(a) - 1):
- minV = min(a[i:])
- minI = a[i:] . index(minV)
- a[i] , a[minI + i] = a[minI + i] , a[i]
- print(a)
复制代码
运行实况:
- D:\[00.Exerciese.2022]\Python>python x.py
- [3, 5, 7, 4, 4, 6, 8, 9, 5, 8, 5, 7, 4, 34, 3]
- [3, 3, 7, 4, 4, 6, 8, 9, 5, 8, 5, 7, 4, 34, 5]
- [3, 3, 4, 7, 4, 6, 8, 9, 5, 8, 5, 7, 4, 34, 5]
- [3, 3, 4, 4, 7, 6, 8, 9, 5, 8, 5, 7, 4, 34, 5]
- [3, 3, 4, 4, 4, 6, 8, 9, 5, 8, 5, 7, 7, 34, 5]
- [3, 3, 4, 4, 4, 5, 8, 9, 6, 8, 5, 7, 7, 34, 5]
- [3, 3, 4, 4, 4, 5, 5, 9, 6, 8, 8, 7, 7, 34, 5]
- [3, 3, 4, 4, 4, 5, 5, 5, 6, 8, 8, 7, 7, 34, 9]
- [3, 3, 4, 4, 4, 5, 5, 5, 6, 8, 8, 7, 7, 34, 9]
- [3, 3, 4, 4, 4, 5, 5, 5, 6, 7, 8, 8, 7, 34, 9]
- [3, 3, 4, 4, 4, 5, 5, 5, 6, 7, 7, 8, 8, 34, 9]
- [3, 3, 4, 4, 4, 5, 5, 5, 6, 7, 7, 8, 8, 34, 9]
- [3, 3, 4, 4, 4, 5, 5, 5, 6, 7, 7, 8, 8, 34, 9]
- [3, 3, 4, 4, 4, 5, 5, 5, 6, 7, 7, 8, 8, 9, 34]
- D:\[00.Exerciese.2022]\Python>
复制代码
通过
- minI = a[i:] . index(minV)
复制代码
获得的索引 minI 是针对 a[i :] 的,也就是说,是从索引 i 开始起算的,所以,真正的索引是 minI + i
|