Feb-24-2020, 10:59 PM
(This post was last modified: Feb-24-2020, 10:59 PM by gregpederseng.)
I am trying to determine time complexity of the MergeSort algorithm below:
def sortedMerge(self, a, b):
result = None
if a == None:
return b
if b == None:
return a
if a.data <= b.data:
result = a
result.next = self.sortedMerge(a.next, b)
else:
result = b
result.next = self.sortedMerge(a, b.next)
return result
def mergeSort(self, h):
import time
start = time.time()
if h == None or h.next == None:
return h
middle = self.getMiddle(h)
nexttomiddle = middle.next
middle.next = None
left = self.mergeSort(h)
right = self.mergeSort(nexttomiddle)
sortedlist = self.sortedMerge(left, right)
end = time.time()
total = (end - start) * 1000.0
return sortedlist, total
def getMiddle(self, h):
if (h == None):
return h
slow = h
fast = h
while (fast.next != None and
fast.next.next != None):
slow = slow.next
fast = fast.next.next
return slow
#Driver Code
y = mergeSort(array.head)
print(y)The problem arises when I try to calculate runtime, and try to return the runtime (total) with sortedlist in the mergeSort function. When I do, I get error "tuple object has no attribute data".
