我正在寻找排序算法。我刚刚开始学习插入排序。我需要为已排序的列表制作一个解决方案,最后使用未分类的数字。所以现在的问题是循环跳过一次迭代或添加另一次重复。这就是我的意思:
当我尝试对此列表进行排序时:{2, 4, 6, 8 ,3}
我明白了:
2 4 6 8 3
2 4 6 8 8
2 4 6 6 8
2 4 4 6 8
2 3 4 6 8
2 3 4 6 8 #duplicated! ^
当我尝试对此列表进行排序时:{2, 4, 6, 8, 1}
我明白了:
2 4 6 8 8
2 4 6 6 8
2 4 4 6 8
2 2 4 6 8
1 2 4 6 8 #no duplicates
我怎么知道完成排序需要多少次迭代?以下是我的排序方式:
ar = list(map(int, input().split()))
mins = ar[-1]
for i in range(len(ar)-1, 0, -1):
if ar[i-1] > mins: ar[i] = ar[i-1]
else: ar[i] = mins
print(*ar)
if mins < ar[0]: ar[0] = mins
print(*ar)
答案 0 :(得分:1)
找到a[i-1] <= mins
时,只需打破循环。
ar = [2, 4, 6, 8 ,1]
mins = ar[-1]
for i in range(len(ar)-1, 0, -1):
if ar[i-1] > mins:
ar[i] = ar[i-1]
else:
ar[i] = mins
break
print(ar)
if mins < ar[0]: ar[0] = mins
print(ar)