2 views

I am working on IDLE when I run the code, I am getting an error:

Traceback (most recent call last):   File "C:/Python34/inversion3.py",

line 44, in <module>

nInversions.inversionMergeSort(m)   File "C:/Python34/inversion3.py", line 16, in inversionMergeSort

left = m[0:half] TypeError: slice indices must be integers or None or have an _index_ method

This is the code:

from collections import deque

m = []

f = open("IntegerArray.txt")

for line in f:

m.append(int(line))

class InversionCount:

def __init__(self, n):

self.n = n

def inversionMergeSort(self, m):

if len(m) <= 1:

return m

half = len(m)/2

left = m[0:half]

right = m[half

left = self.inversionMergeSort(left)

right = self.inversionMergeSort(right)

return self.inversionSort(left, right)

def inversionSort(self, left, right):

leftQueue = deque(i for i in left)

rightQueue = deque(j for j in right)

orderedList = []

while len(leftQueue) > 0 or len(rightQueue) > 0:

if len(leftQueue) > 0 and len(rightQueue) > 0:

if leftQueue[0] <= rightQueue[0]:

orderedList.append(leftQueue[0])

leftQueue.popleft()

else:

orderedList.append(rightQueue[0])

self.n += len(leftQueue)

rightQueue.popleft()

elif len(leftQueue) > 0:

orderedList.append(leftQueue[0])

leftQueue.popleft()

elif len(rightQueue) > 0:

orderedList.append(rightQueue[0])

rightQueue.popleft()

return orderedList

nInversions = InversionCount(0)

nInversions.inversionMergeSort(m)

print (nInversions.n)

by (36.8k points)

If you see you are getting flot as output but not int

>>> 3/2

1.5

In you line number 15

half = len(m)/2

To make it double, you need to give one more slash to the code:

half = len(m)//2

If you are a beginner and want to know more about Data Science the do check out the Data Science course