Подсчитать количество сравнений и поменять местами сортировку в Python - PullRequest
0 голосов
/ 06 апреля 2019

Мне нужно подсчитать количество сравнений и свопов в следующем алгоритме сортировки выбора:

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 голосов
/ 06 апреля 2019

Вы говорите, что хотите посчитать, сколько раз вы выполняете определенную строку.Вы их считаете.Вот пример:

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

swaps 19, сравнения 190

Обратите внимание, что я использовал описательные имена переменных вместо c1 и c2.Это поможет вам в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...