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

Reply via email to