Я в основном пытаюсь закодировать алгоритм подсчета инверсий (с делением & победить стратегию сортировки слияния). Я первый попытался проверить его в небольшом массиве, но я получаю следующее сообщение об ошибке:Python дает ошибку «int is iterable», хотя код выглядит чистым
Traceback (most recent call last):
File "cntinv.py", line 26, in <module>
ans = count_inversions(array)[1]
File "cntinv.py", line 19, in count_inversions
a, left = count_inversions(array[:mid])
File "cntinv.py", line 19, in count_inversions
a, left = count_inversions(array[:mid])
TypeError: 'int' object is not iterable
Вот мой код:
def count_split_inversions(a, b):
c, cnt = [], 0
while len(a) > 0 and len(b) > 0:
if b[0] < a[0]:
c.append(b.pop(0))
cnt += len(a)
else:
c.append(a.pop(0))
if len(a) > 0:
c.extend(a)
else:
c.extend(b)
return(c, cnt)
def count_inversions(array):
n = len(array)
if n <= 1: return(0)
mid = n // 2
a, left = count_inversions(array[:mid])
b, right = count_inversions(array[mid:])
c, split = count_split_inversions(a, b)
return(c, left + right + split)
array = [1, 3, 5, 2, 4, 6]
ans = count_inversions(array)[1]
print("The answer is:", str(ans))
Я не мог найти ошибку с помощью сообщения об ошибке , Поэтому я был бы признателен, если вы поможете мне указать на мою ошибку.
Заранее спасибо. :)
Вот и все. Обнаружена ошибка! :) Благодаря. Не могу поверить, что я этого не видел. : 3 –