fork(1) download
  1. #!/usr/bin/python
  2.  
  3. def Merge(a, p, q, r):
  4. (l, ri)=([], [])
  5. for i in range(p, q):
  6. l.append(a[i])
  7. for j in range(q, r):
  8. ri.append(a[j])
  9.  
  10. l.append(float('inf'))
  11. ri.append(float('inf'))
  12. print 'l and ri are %s and %s' % (l,ri)
  13. i=0
  14. j=0
  15. for k in range(p, r):
  16. if l[i] <= ri[j]:
  17. a[k] = l[i]
  18. i += 1
  19. else:
  20. a[k] = ri[j]
  21. j += 1
  22.  
  23. print 'a after merge is %s' % (a)
  24.  
  25. def MergeSort(a, p, r):
  26. print 'a,P and r are %s, %d and %d' % (a,p,r)
  27. if p + 1 < r:
  28. q = divide(r + p)
  29. MergeSort(a, p, q)
  30. print 'After MS of %d and %d' % (p,q)
  31. MergeSort(a, q, r)
  32. print 'After 2nd MS of %d and %d' % (q+1,r)
  33. print 'Before Mer of %d and %d and %d' % (p,q,r)
  34. Merge(a, p, q, r)
  35.  
  36. def divide(number):
  37. Q, R = divmod(number, 2)
  38. return Q + R
  39.  
  40. if __name__=="__main__":
  41. a = [2, 9, 6, 5, 4]
  42. MergeSort(a, 0, len(a))
  43. print a
  44.  
Success #stdin #stdout 0.01s 8968KB
stdin
Standard input is empty
stdout
a,P and r are [2, 9, 6, 5, 4], 0 and 5
a,P and r are [2, 9, 6, 5, 4], 0 and 3
a,P and r are [2, 9, 6, 5, 4], 0 and 2
a,P and r are [2, 9, 6, 5, 4], 0 and 1
After MS of 0 and 1
a,P and r are [2, 9, 6, 5, 4], 1 and 2
After 2nd MS of 2 and 2
Before Mer of 0 and 1 and 2
l and ri are [2, inf] and [9, inf]
a after merge is [2, 9, 6, 5, 4]
After MS of 0 and 2
a,P and r are [2, 9, 6, 5, 4], 2 and 3
After 2nd MS of 3 and 3
Before Mer of 0 and 2 and 3
l and ri are [2, 9, inf] and [6, inf]
a after merge is [2, 6, 9, 5, 4]
After MS of 0 and 3
a,P and r are [2, 6, 9, 5, 4], 3 and 5
a,P and r are [2, 6, 9, 5, 4], 3 and 4
After MS of 3 and 4
a,P and r are [2, 6, 9, 5, 4], 4 and 5
After 2nd MS of 5 and 5
Before Mer of 3 and 4 and 5
l and ri are [5, inf] and [4, inf]
a after merge is [2, 6, 9, 4, 5]
After 2nd MS of 4 and 5
Before Mer of 0 and 3 and 5
l and ri are [2, 6, 9, inf] and [4, 5, inf]
a after merge is [2, 4, 5, 6, 9]
[2, 4, 5, 6, 9]