完成排序的迭代次数未知

时间:2014-03-15 04:46:54

标签: python insertion-sort

我正在寻找排序算法。我刚刚开始学习插入排序。我需要为已排序的列表制作一个解决方案,最后使用未分类的数字。所以现在的问题是循环跳过一次迭代或添加另一次重复。这就是我的意思:

当我尝试对此列表进行排序时:{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)

1 个答案:

答案 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)