Я хочу подсчитать количество сравнений из сортировки вставкой, но переменная count не увеличивается, как должно быть. Он должен давать около (n * (n-1)) / 2 (n - размер массива), но вместо этого он дает мне n / 2.
#---------------InsertionSort----------------#
def insertion_sort(a):
count = 0 #<----
for i in range(1, len(a)):
current = a[i]
k = i
while k>0:
count = count+1 #<----
if current<a[k-1]:
a[k] = a[k-1]
k = k-1
else:
break
a[k] = current
return count
Я пробовал использовать глобальные переменные, объявить переменные как нелокальный, разделите счет на один счетчик для for-l oop и один для while-l oop. Ничего не работает
обновление: вот как я создаю массивы
for N in range(1,100):
quick_sort_x.append(N)
insertion_sort_x.append(N)
comparisons_qs = 0
comparisons_is = 0
for i in range(5):
a = list(range(N))
random.shuffle(a)
b = a
comparisons_qs += quick_sort(a)
comparisons_is += insertion_sort(b)
comparisons_qs = comparisons_qs/5
comparisons_is = comparisons_is/5