Мне нужно добавить счетчик общих сравнений для моей программы сортировки вставки, но я не знаю, почему я получаю в общей сложности 0 сравнений!Python 3: Вставка Сортировка счетчиков сравнений
Я знаю, что выход сравнения должен быть 15 (для моего конкретного массива) не 0.
Это мой код до сих пор:
def insertionSort(values):
k = 0
n = len(values) - 1
comparisons = 0
while k+1 <= n:
i = k
while values[i] > values[i+1]:
temp = values[i]
values[i] = values[i+1]
values[i+1] = temp
comparisons += 1 #I think this is wrong
k = k + 1
return comparisons, values
Что я делаю неправильно?
Я просто попробовал вашу модифицированную версию, но когда я тестирую массив [1, 2, 3, 55, 5, 6, 8, 7, 9, 111], он дает мне общее сравнение «6» должно быть 15. –
переменная сравнения претерпевает прирост только в том случае, если существует своп, поэтому он точно не сообщает о количестве сравнений, которые происходят. Чтобы сообщить об этом полностью, вам нужно увеличить свой счетчик до внутреннего и внутри внутреннего цикла while - оба места. 'в то время как к + 1 <= п: я = к + 1 curr_val = значения [I] сравнения + = 1 в то время как я> 0 и значения [I-1]> curr_val: значения [I] = значения [i-1] i = i-1 сравнения + = 1' Сделайте эту модификацию, которая должна это сделать ... –
только что отредактировал мой ответ, пожалуйста, проверьте ... –