【问题标题】:Counting number of elements to be sorted in insertion sort algorithm计算插入排序算法中要排序的元素数
【发布时间】:2014-03-15 13:28:48
【问题描述】:

我认为标题是不言自明的。我正在尝试编写一个程序,该程序可以计算使用插入排序对列表进行排序所需的交换次数。这就是我所做的:

counts = []
for _ in range(int(input())):
    size = int(input())
    ar = list(map(int, input().split()))
    count = 0
    for i in range(1, len(ar)):
        for j in range(i, 0, -1):
            if ar[j] > ar[i]: count +=1
    counts.append(count)
print(*counts)

但问题是它不起作用。

对于列表{1 1 1 2 2} 我得到0 这是正确的,但是,

对于列表{2 1 3 1 2} 我得到2 这是不正确的答案是4

我能知道为什么它不起作用吗?谢谢。

【问题讨论】:

    标签: python algorithm sorting python-3.x


    【解决方案1】:

    都是for j in range(i, 0, -1): 的原因。在range 中不包括右边界,所以你应该:

    for j in range(i-1, -1, -1):
    

    【讨论】:

    • 或者:reversed(range(i)) 如果使用三个参数看起来很难看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多