Advertisement
AlexG2230954

pum

Mar 1st, 2023 (edited)
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.74 KB | None | 0 0
  1. """
  2. Здесь собраны все алгоритмы сортировок,
  3. которые мы изучали с вами на уроке.
  4.  
  5. Каждый алгоритм помещен в отдельную функцию и помечен
  6. сверху комментарией с названием этого алгоритма сортировки.
  7. Если вам нужно в задаче воспользоваться каким-то алгоритмом
  8. сортировки просто копируйте нужную функцию и вставляйте в свой
  9. код.
  10.  
  11. Каждая функция принимает на вход список и сортирует его внутри
  12. (то есть возвращаться ничего не будет. Функция будет сортировать
  13. именно тот список, который вы передали).
  14.  
  15. Ниже будет пример с применением одного из алгоритмов сортировки.
  16.  
  17. P.S. Если у вас будут какие-то вопросы по коду, то смело пишите в комментариях!
  18. Для этого нужно нажать на кнопку над кодом (она будет в виде иконки облачка с сообщением
  19. и надписью ADD COMMENT)
  20. """
  21.  
  22.  
  23. # Сортировка вставкой (с использованием особенностей питона)
  24. # Видео с теорией: https://youtu.be/KZxP5JqtKKA
  25. def SelectionSort(array):
  26.     for i in range(len(array)):
  27.         max_element = max(array[i:])
  28.         array.remove(max_element) # вытаскиваем максимальный элемент из неотсортированной части списка
  29.         arra.insert(i, max_element) # вставляем его в конец отсортированной части
  30.  
  31.  
  32. # Сортировка вставкой (без использования особенностей питона)
  33. def SelectionSort(array):
  34.     for i in range(len(array)):
  35.         max_element_index = i # индекс максимального элемента в неотсортированной части
  36.        
  37.         for j in range(i, len(array)):
  38.             if array[j] > array[max_element_index]:
  39.                 max_element_index = j
  40.        
  41.         array[i], array[max_element_index] = array[max_element_index], array[i]
  42.  
  43.  
  44. # Сортировка пузырьком
  45. # Видео с теорией: https://youtu.be/MH7ch2_KG4c
  46. def BubbleSort(array):
  47.     is_sorted = False # маркер, который обозначает, что список отсортирован
  48.    
  49.     # пока не отсортирован...
  50.     while not is_sorted:
  51.         is_sorted = True # помечаем, что список отсортирован
  52.        
  53.         for i in range(len(array) - 1):
  54.             # как только находим неотсортированную пару - помечаем список неотсортированным
  55.             if array[i] > array[i + 1]:
  56.                 is_sorted = False
  57.                 array[i + 1], array[i] = array[i], array[i + 1]
  58.  
  59.  
  60. # Сортировка подсчетом
  61. # Видео с теорией: https://youtu.be/6dk_csyWif0
  62. def CountSort(array):
  63.     # создаем список с количеством того, сколько раз попадалась каждое число
  64.     # в таком списке индекс - само число, а значение - сколько раз оно попадалось
  65.     amounts = [0] * (max(array) + 1)
  66.    
  67.     # считаем все чиселки в списке
  68.     for number in array:
  69.         amounts[number] += 1
  70.  
  71.     # обновляем список так, чтобы он был отсортирован
  72.     cursor = 0 # показывает, на какую позицию вставлять новое число
  73.    
  74.     for number in range(len(amounts)):
  75.         # здесь мы используем особенность range, что при range(X)
  76.         # код в теле цикла будет выполняться ровно X раз
  77.         for _ in range(amounts[number]):
  78.             array[cursor] = number # вставляем чиселку
  79.             cursor += 1 # двигаем курсор вправо
  80.  
  81.  
  82. # пример использования алгоритма сортировки пузырьком
  83. array = [5, 1, 4, 3, 2] # неотсортированный список
  84.  
  85. print("Перед сортировкой:", array)
  86. BubbleSort(array)
  87. print("После сортировки:", array) # заметьте, что я вывожу тот же самый список!!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement