[Tutor] weird error in my python program : merge sort
Abhishek Pratap
abhishek.vit at gmail.com
Thu Mar 22 21:40:29 CET 2012
I am imlpementing a merge sort algo for clarity purposes but my
program is giving me weird answers. Sometimes it is able to sort and
other times it does funky things. Help appreciated
from random import *
from numpy import *
nums = [random.randint(100) for num in range(4)]
#nums = [3,7,2,10]
def merge_sort(nums, message='None'):
#print "%s : num of elements in the list %d" % (message,len(nums))
print '[merge_sort] %s : %s' % ( message, nums)
if len(nums) <= 1:
return nums
middle = len(nums)/2
print '[merge_sort] Mid point is %d' % middle
left = nums[:middle]
right = nums[middle:]
merge_sort(left,'left')
merge_sort(right,'right')
print '[merge_sort] Calling merge on left: %s right : %s' % (left,right)
result = merge(left,right)
print '[merge_sort] %s' % result
return result
def merge(left,right):
result = []
i,j = 0,0
print '[merge] left %s, right %s' % (left, right)
while i < len(left) and j < len(right):
print '[merge]Comparing left %d to right %d' % (left[i],right[j])
if left[i] <= right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
print '[merge]pushing to result',result
result.extend(left[i:])
result.extend(right[j:])
print '[merge] return',result
return result
merge_sort(nums,'start')
More information about the Tutor
mailing list