Advertisement
Vikis

Sorting

Nov 16th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.08 KB | None | 0 0
  1. #!usr/bin/pyton3
  2. import random
  3.  
  4. lst = random.sample(range(1,100),10)
  5. print("input list:{}".format(lst))
  6. sub_list_size = 1
  7. list_size = len(lst)
  8.  
  9. while sub_list_size < list_size:
  10.       start = 0
  11.       while start < list_size - 1:
  12.           mid = min(start + sub_list_size - 1, list_size - 1)
  13.           end = min(start + 2 * sub_list_size - 1, list_size - 1)  
  14.  
  15.       mlist_1_size = mid - start + 1
  16.       mlist_2_size = end - mid
  17.  
  18.       mlist_1 = lst[start: start + mlist_1_size]
  19.       mlist_2 = lst[mid + 1: mid + mlist_2_size + 1]
  20.  
  21.  
  22.       i, j, k = 0, 0, start
  23.       while i < mlist_1_size and j < mlist_2_size:
  24.          if mlist_1[i] > mlist_2[j]:
  25.              lst[k] = mlist_2[j]
  26.          j += 1
  27.       else:
  28.              lst[k] = mlist_1[i]
  29.              i += 1
  30.       k += 1
  31.       if i < mlist_1_size:
  32.             lst[k: k + len(mlist_1[i:])] = mlist_1[i:]
  33.  
  34.       if j < mlist_2_size:
  35.             lst[k: k + len(mlist_2[j:])] = mlist_2[j:]
  36.  
  37.             start = start + sub_list_size * 2
  38.             sub_list_size = sub_list_size * 2
  39.            
  40.       print("Output list:{}".format(lst))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement