计算比较次数并在python

时间:2019-04-06 12:13:35

标签: python algorithm sorting

我需要计算以下选择排序算法中的比较和交换次数:

import random
lista = random.sample(range(0,20), 20):
def selecao(lista):
    for i in range(0, (len(lista)-1)):
        mini = i
        for j in range(i+1, len(lista)):
            if lista[j] < lista[mini]:
               mini = j
        lista[mini], lista[i] = lista[i],lista[mini]

    return lista
print(selecao(lista))

我如何解释进行了多少次比较和交换?换行在此行进行:

lista[mini], lista[i] = lista[i],lista[mini]

c1表示比较次数,c2表示交换次数。谢谢

1 个答案:

答案 0 :(得分:0)

您说您想计算执行某行的次数。你算他们。这是一个示例:

swaps = 0
comparaciones = 0
for i in range(19):
    for _ in range(19-i):
        comparaciones += 1
    swaps += 1
print ("swaps {}, comparisons {}".format(swaps, comparaciones))
  

交换19,比较190

请注意,我使用了描述性变量名,而不是c1和c2。这样做将对您将来有所帮助。