Advertisement
Void-voiD

Untitled

Apr 2nd, 2023
519
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.49 KB | Source Code | 0 0
  1. from random import randint  # random integer
  2.  
  3.  
  4. def insert_elem(elem, start, stop):
  5.     global data
  6.  
  7.     # если входной массив пустой
  8.     # база рекурсии 0
  9.     if start == stop == 0:
  10.         data.append(elem)
  11.         return
  12.  
  13.     # если наш срез состоит из одного элемента
  14.     # база рекурсии 1
  15.     n = stop - start
  16.     if n == 1:
  17.         if elem > data[start]:
  18.             if start + 1 < len(data):
  19.                 data.insert(start + 1, elem)
  20.                 return
  21.             # если нам нужно вставить элемент в конец массива + 1
  22.             else:
  23.                 data.append(elem)
  24.                 return
  25.         else:
  26.             data.insert(start, elem)
  27.             return
  28.  
  29.     # шаг рекурсии - ищем середину
  30.     centre = start + n // 2
  31.     if elem < data[centre]:
  32.         insert_elem(elem, start, centre)
  33.     elif elem > data[centre]:
  34.         insert_elem(elem, centre, stop)
  35.     else:
  36.         data.insert(centre, elem)
  37.  
  38.  
  39. a = open('input_source.txt', 'w', encoding='utf-8')
  40. for i in range(16):
  41.     a.writelines(str(randint(1, 1000)) + '\n')
  42.     b = randint(0, 100)
  43.     if b < 20:
  44.         a.writelines("Print data\n")
  45. a.close()
  46.  
  47. data = []
  48. a = open('input_source.txt', 'r', encoding='utf-8')
  49. for x in a.readlines():
  50.     if x == "Print data\n":
  51.         print(data)
  52.     else:
  53.         insert_elem(int(x), 0, len(data))
  54. print(data)
  55.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement