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') _______________________________________________ Tutor maillist - [email protected] To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
