---
# System prepended metadata

title: WDI zadanie 3 lista 6

---

---
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
