-4
기본적으로 병합 정렬의 & 분할을 사용하여 역전을 계산하는 알고리즘을 코딩하려고합니다. 내가 먼저 작은 배열에서 테스트하려고했으나 나는 다음과 같은 오류 얻을 :Python은 코드가 깨끗해 보이더라도 "int is iterable not"오류를 표시합니다.
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))
나는 오류 메시지의 도움으로 실수를 찾을 수 없습니다 : 여기
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
내 코드의를 . 내 실수를 지적하도록 도와 주시면 감사하겠습니다.
미리 감사드립니다. :)
그게 전부입니다. 오류를 발견했습니다! :) 감사. 나는 그것을 보지 못했다고 나는 믿을 수 없다. :삼 –