Advertisement
ihor_ks

odd_even_merge_sort.py

Nov 6th, 2018
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.10 KB | None | 0 0
  1. #!/usr/bin/python3
  2.  
  3. import random
  4.  
  5. #Create a sort list of numbers. Numbers must be sorted in
  6. #the growing order is initially odd, and then even numbers.
  7. #For sorting use the merging algorithm.
  8.  
  9. odd, even = [], []
  10.  
  11. def merge_sort(l):
  12.     """Recursive merge sort."""
  13.     if len(l) > 1:
  14.         mid = len(l) // 2
  15.         left = l[:mid]
  16.         right = l[mid:]
  17.        
  18.         merge_sort(left)
  19.         merge_sort(right)
  20.  
  21.         i = j = k = 0
  22.         while i < len(left) and j < len(right):
  23.             if left[i] < right[j]:
  24.                 l[k] = left[i]
  25.                 i += 1
  26.             else:
  27.                 l[k] = right[j]
  28.                 j += 1
  29.             k += 1
  30.        
  31.         if i < len(left):
  32.             l[k: k + len(left[i:])] = left[i:]
  33.         if j < len(right):
  34.             l[k: k + len(right[j:])] = right[j:]       
  35.                
  36. lst = random.sample(range(1, 100), 10)
  37. print("Input list: {}".format(lst))
  38.  
  39. for item in lst:
  40.     if item % 2 != 0:
  41.         odd.append(item)
  42.     else:
  43.         even.append(item)
  44.  
  45. merge_sort(odd)
  46. merge_sort(even)
  47. print("Output list:",odd + even)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement