MaximTakkaTo

Untitled

Dec 18th, 2020
979
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.09 KB | None | 0 0
  1. '''
  2.    Функция сортировки пузырьком с ускорением
  3. '''
  4. def Bubule_Sort(a: list):
  5.     flag = True # Флаг, принимающий True, если выполнена хоть одна перестановка в массиве, иначе False - прекращаем сортировку
  6.     i = 0
  7.     j = 0
  8.     while i < len(a) and flag:
  9.         j = 0
  10.         flag = False
  11.         while j < len(a) - i - 1:
  12.             if a[j] > a[j+1]:
  13.                 a[j+1],a[j] = a[j], a[j+1]
  14.                 flag = True
  15.             j += 1
  16.         i += 1
  17.  
  18. '''
  19.    Функция вставки элемента в отсортированный массив с помощью бинарного поиска
  20. '''
  21. def Input_Element(el: int, a: list):
  22.     left = 0
  23.     right = len(a)
  24.     while left < right:
  25.         mid = (left + right) // 2
  26.         if el < a[mid]:
  27.             right = mid
  28.         else:
  29.             left = mid + 1
  30.     a.insert(left, el)
  31.  
  32.  
  33. '''
  34.    Задача про Бендера
  35.    file_name - имя входного файла
  36.    Возвращает сумму, которую нужно заплатить Бендеру
  37. '''
  38. def task2(file_name: str):
  39.     # Формируем массив целых чисел из строки файла
  40.     f = open(file_name, 'r')
  41.     st = f.readline()
  42.     a = st.split(' ')
  43.     i = 0
  44.     while i < len(a):
  45.         a[i] = int(a[i])
  46.         i += 1
  47.  
  48.     Bubule_Sort(a) # Сортируем исходный массив
  49.     summ = 0
  50.     while len(a) > 1 :                      # Выполняем до тех пор, пока не получим конечную сумму      
  51.         currsumm = a.pop(0) + a.pop(0)      # Получаем минимальную сумму и удаляем первые 2 элемента из массива
  52.         summ += currsumm * 0.05             # Считаем сумму, которую нужно заплатить
  53.         Input_Element(currsumm, a)          # Вставляем новую сумму в отсортированный массив
Advertisement
Add Comment
Please, Sign In to add comment