Advertisement
Vikis

revers sort

Nov 16th, 2018
102
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.       i, j, k = 0, 0, start
  22.       while i < mlist_1_size and j < mlist_2_size:
  23.          if mlist_1[i] < mlist_2[j]:
  24.              lst[k] = mlist_2[j]
  25.          j += 1
  26.       else:
  27.              lst[k] = mlist_1[i]
  28.              i += 1
  29.       k += 1
  30.       if i < mlist_1_size:
  31.             lst[k: k + len(mlist_1[i:])] = mlist_1[i:]
  32.  
  33.       if j < mlist_2_size:
  34.             lst[k: k + len(mlist_2[j:])] = mlist_2[j:]
  35.  
  36.             start = start + sub_list_size * 2
  37.             sub_list_size = sub_list_size * 2
  38.            
  39.       print("Output list: {}".format(lst))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement