Advertisement
Socialking

Untitled

Mar 13th, 2021
816
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.50 KB | None | 0 0
  1. ###################################################
  2. # Importujemy biblioteki, które będziemy używać w programie
  3. # random - generowanie randomowych liczb
  4. # randint - generowanie randomowych integerów liczb
  5. # time - do mozliwości obliczania aktualnie wykonywanego czasu skryptu
  6. ###################################################
  7.  
  8. import random
  9. from random import randint
  10. import time
  11.  
  12. ###################################################
  13. # Tworzymy funkcję do generowania liczb określająca ile liczb ma zostać wygenerowanych
  14. # oraz jaka liczba ma być maksymalna z przedziału, pętla for generuje daną ilość liczb
  15. # wyjściowych jako maksymalny zasięg wielkości listy wpisaną w funkcji
  16. ###################################################
  17.  
  18.  
  19. def create_list(size=10, max=100000):
  20.     return [randint(0, max) for _ in range(size)]
  21.  
  22.  
  23. ###################################################
  24. # Generujemy zmienne z listą liczb nieposrotowanych do dalszego sortowania ich w skryptach
  25. # create_list(wielkość_listy, maksymalna_wielkość_generowanej_liczby)
  26. ###################################################
  27.  
  28. lista100 = create_list(100, 100000)
  29. lista1000 = create_list(1000, 100000)
  30. lista10000 = create_list(10000, 100000)
  31. lista100000 = create_list(100000, 100000)
  32.  
  33.  
  34. ###################################################
  35. # Sortowanie bubbule sort, w tym przypadku jest to lepsza wersja ów skryptu, samo sortowanie
  36. # bubble - czyli inaczej sortowanie bombelkowe polega na porównywaniu dwóch
  37. # kolejnych elementów i zamianie ich kolejności, jeżeli zaburza ona porządek,
  38. # w jakim się sortuje tablicę. Sortowanie kończy się, gdy podczas kolejnego
  39. # przejścia nie dokonano żadnej zmiany.
  40. ###################################################
  41.  
  42. def bubblesort(list):
  43.     # Pętla licząca wielkość listy, len() zwraca ilość obiektów w liście
  44.     for iter_num in range(len(list)-1, 0, -1):
  45.         # Tutaj rozpoczyna się sortowanie obiektów w liście czyli liczb
  46.         for idx in range(iter_num):
  47.             # Skrypt sprawdza dwa kolejne elementy w liście
  48.             if list[idx] > list[idx+1]:
  49.                 # Jeżeli jest większa niż kolejny zamienia je kolejnością
  50.                 temp = list[idx]
  51.                 # Przypisuje wartość aktyalną z kolejną wartością z listy
  52.                 list[idx] = list[idx+1]
  53.                 list[idx+1] = temp
  54.     # Zwracanie posortowanej listy obiektów
  55.     return list
  56.  
  57. ###################################################
  58. # Sortowanie po przez wybór - jedna z prostszych metod sortowania o złożoności.
  59. # Polega na wyszukaniu elementu mającego się znaleźć na żądanej pozycji i zamianie miejscami z tym,
  60. # który jest tam obecnie. Operacja jest wykonywana dla wszystkich indeksów sortowanej tablicy.
  61. ###################################################
  62.  
  63.  
  64. def selection_sort(list):
  65.  
  66.     for idx in range(len(list)):
  67.  
  68.         min_idx = idx
  69.         for j in range(idx + 1, len(list)):
  70.             if list[min_idx] > list[j]:
  71.                 min_idx = j
  72.  
  73.         list[idx], list[min_idx] = list[min_idx], list[idx]
  74.  
  75.     return list
  76.  
  77.  
  78. def quicksort(list):
  79.     if len(list) <= 1:
  80.         return list
  81.     pivot = list[len(list) // 2]
  82.     left = [x for x in list if x < pivot]
  83.     middle = [x for x in list if x == pivot]
  84.     right = [x for x in list if x > pivot]
  85.  
  86.     return quicksort(left) + middle + quicksort(right)
  87.  
  88.  
  89. def insertion_sort(list):
  90.  
  91.     for i in range(1, len(list)):
  92.         j = i-1
  93.         nxt_element = list[i]
  94.  
  95.         while (list[j] > nxt_element) and (j >= 0):
  96.             list[j+1] = list[j]
  97.             j = j-1
  98.         list[j+1] = nxt_element
  99.  
  100.     return list
  101.  
  102.  
  103. #######################
  104. ## SORTOWANIA BUBBLE ##
  105. #######################
  106.  
  107. start_time = time.time()
  108. print(bubblesort(lista1000))
  109. print('\033[92m' + "[Bubble 100] Czas sortowania: %s sekund " %
  110.       (time.time() - start_time) + '\033[0m')
  111.  
  112. start_time = time.time()
  113. print(bubblesort(lista1000))
  114. print('\033[92m' + "[Bubble 1000] Czas sortowania: %s sekund " %
  115.       (time.time() - start_time) + '\033[0m')
  116.  
  117. start_time = time.time()
  118. print(bubblesort(lista1000))
  119. print('\033[92m' + "[Bubble 10000] Czas sortowania: %s sekund " %
  120.       (time.time() - start_time) + '\033[0m')
  121.  
  122. start_time = time.time()
  123. print(bubblesort(lista1000))
  124. print('\033[92m' + "[Bubble 100000] Czas sortowania: %s sekund " %
  125.       (time.time() - start_time) + '\033[0m')
  126.  
  127. ###################################################
  128. ###################################################
  129. ###################################################
  130.  
  131. ##########################
  132. ## SORTOWANIA QUICKSORT ##
  133. ##########################
  134.  
  135. start_time = time.time()
  136. print(quicksort(lista100))
  137. print('\033[92m' + "[Quick 100] Czas sortowania: %s sekund " %
  138.       (time.time() - start_time) + '\033[0m')
  139.  
  140. start_time = time.time()
  141. print(quicksort(lista1000))
  142. print('\033[92m' + "[Quick 1000] Czas sortowania: %s sekund " %
  143.       (time.time() - start_time) + '\033[0m')
  144.  
  145. start_time = time.time()
  146. print(quicksort(lista10000))
  147. print('\033[92m' + "[Quick 10000] Czas sortowania: %s sekund " %
  148.       (time.time() - start_time) + '\033[0m')
  149.  
  150. start_time = time.time()
  151. print(quicksort(lista100000))
  152. print('\033[92m' + "[Quick 100000] Czas sortowania: %s sekund " %
  153.       (time.time() - start_time) + '\033[0m')
  154.  
  155. ###################################################
  156. ###################################################
  157. ###################################################
  158.  
  159. ###################################################
  160. ## SORTOWANIA SELECTION SORT (PRZEZ WYBIERANIE) ##
  161. ###################################################
  162.  
  163. start_time = time.time()
  164. print(selection_sort(lista100))
  165. print('\033[92m' + "[Selection 100] Czas sortowania: %s sekund " %
  166.       (time.time() - start_time) + '\033[0m')
  167.  
  168. start_time = time.time()
  169. print(selection_sort(lista1000))
  170. print('\033[92m' + "[Selection 1000] Czas sortowania: %s sekund " %
  171.       (time.time() - start_time) + '\033[0m')
  172.  
  173. start_time = time.time()
  174. print(selection_sort(lista10000))
  175. print('\033[92m' + "[Selection 10000] Czas sortowania: %s sekund " %
  176.       (time.time() - start_time) + '\033[0m')
  177.  
  178. start_time = time.time()
  179. print(selection_sort(lista100000))
  180. print('\033[92m' + "[Selection 100000] Czas sortowania: %s sekund " %
  181.       (time.time() - start_time) + '\033[0m')
  182.  
  183. ###################################################
  184. ###################################################
  185. ###################################################
  186.  
  187. ##################################################
  188. ## SORTOWANIA INSERTION SORT (PRZEZ WSTAWIANIE) ##
  189. ##################################################
  190.  
  191. start_time = time.time()
  192. print(insertion_sort(lista100))
  193. print('\033[92m' + "[Insertion 100] Czas sortowania: %s sekund " %
  194.       (time.time() - start_time) + '\033[0m')
  195.  
  196. start_time = time.time()
  197. print(insertion_sort(lista1000))
  198. print('\033[92m' + "[Insertion 1000] Czas sortowania: %s sekund " %
  199.       (time.time() - start_time) + '\033[0m')
  200.  
  201. start_time = time.time()
  202. print(insertion_sort(lista10000))
  203. print('\033[92m' + "[Insertion 10000] Czas sortowania: %s sekund " %
  204.       (time.time() - start_time) + '\033[0m')
  205.  
  206. start_time = time.time()
  207. print(insertion_sort(lista100000))
  208. print('\033[92m' + "[Insertion 100000] Czas sortowania: %s sekund " %
  209.       (time.time() - start_time) + '\033[0m')
  210.  
  211. ###################################################
  212. ###################################################
  213. ###################################################
  214.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement