---
title: WDI zadanie 3 lista 6
---
'''
algorytm bubble sort polega na "wypychaniu" największego elementu na koniec listy w każdej iteracji pętli.
how_many - zmienna, która odzwierciedla liczbę obrotów pęli
swipe - kontroluje, czy w danym przebiegu pętli for nastąpiła jakaś zamiana elementów - jeżeli nie, to znaczy, że tablica jest już posortowana i można przerwać działanie pętli
'''
```python=
def bubble_sort(T): #argumentem tej funkcji jest lista do posortowania
n = len(T)
swipe = True
how_many = 0
temp = 0
while (how_many < n-1) and swipe:
swipe = False
for i in range(n-1-how_many): #dzięki odjęciu "how_many" nie porównujemy już posortowanych elementów z końca tablicy
if T[i] > T[i+1]:
temp = T[i]
T[i] = T[i+1]
T[i+1] = temp
swipe = True
how_many += 1
return T
print(bubble_sort([4, 6, 1, 3, 2, 5, 7, 4, 155, 0, 3, 5, 94, 2]))
```
'''
liczba porównań dla ciągu uporządkowanego niemalejąco: n-1 ---> ponieważ już po pierwszym przejściu pętli, dzieki zmiennej swap okaże się, że nie nastąpiła żadna zamiana
liczba podstawień dla ciągu uporządkowanego niemalejąco: 0
liczba porównań dla ciągu uporządkowanego nierosąno: n^2//2
liczba podstawień dla ciągu uporządkowanego nierosąno: n^2//2
złożoność o(n^2) ponieważ, mimo usprawnień, występują dwie zagnieżdzone pętle