我正在尝试使用我自己的def
在python中对列表进行排序这是我的代码:
def mysort(a):
for i in range(len(a)):
if (a[i]<a[(i+1)]):
a[i],a[i+1] = a[i+1],a[i]
i=0
return a
a = [2,3,4]
print(mysort(a))
我遇到的第一个错误是列表超出范围 当我在实时编程模式中查看列表时,我看到只有第一个项目被替换为第二个项目,而第三个项目是列表中最大的数字并不是第一个
错误之前的实时编程模式列表:
[3,4,2]
我该如何解决这个问题?
答案 0 :(得分:0)
您缺少一些组件:
1-您按相反的顺序排序
2-您必须将排序限制为len(a)-1
3-如果不符合交换合同,则必须增加索引
4-你正在改变for循环中的索引......你必须在这里使用while循环。
def mysort(a):
idx = 0
while idx < len(a)-1:
if a[idx] < a[(idx+1)]:
a[idx] ,a[idx+1] = a[idx+1], a[idx]
idx = 0
else:
idx += 1
return a
a = [2,3,4]
print(mysort(a))
a = [2,3,4]
print(mysort(a))
a = [0, 1, 4, 3, 6, 2]
print(mysort(a))
a = [6, 4, 2]
print(mysort(a))
a = [-1, -1, -1, 1]
print(mysort(a))
[4, 3, 2]
[6, 4, 3, 2, 1, 0]
[6, 4, 2]
[1, -1, -1, -1]
IDK是什么类型,但它看起来像一个冒泡排序,你在列表的最开头一次又一次地开始