matematykaszkolna.pl
PYTHON PYTHON: Jest ktoś w stanie wytłumaczyć co dzieje się w funkcji sort()? Jest to algorytm sortujący, ale nie do końca rozumiem fragmenty zaznaczone na czerwono: data = [10, 3, 7, 8, 1, 6, 2, 9, 4, 5, 0] def sort(data): for i in range(len(data) − 1, 0, −1): for j in range(i): if data[j] > data[j + 1]: data[j], data[j + 1] = data[j + 1], data[j] sort(data) print(data)
13 paź 16:32
Pytający: len(data) // zwraca długość listy, oznaczmy jako n, wtedy: range(len(data) − 1, 0, −1) // zwraca sekwencję: n−1, n−2, ..., 1 Zerknij tu: https://docs.python.org/3/library/stdtypes.html#typesseq-range data[j], data[j + 1] = data[j + 1], data[j] // to zwyczajna zamiana wartości (swap), taki sam efekt otrzymałbyś w ten sposób: tmp=data[j] data[j] = data[j + 1] data[j + 1] = tmp
13 paź 16:51
PYTHON: Dziekuje!
13 paź 17:04
PYTHON: Jeszcze jedno pytanie: dlaczego konieczne są dwie pętle for?
13 paź 17:18
Pytający: Bo po jednym obiegu pętli zewnętrznej masz jedynie gwarancję, że ostatni element listy jest największy. Po drugim obiegu pętli zewnętrznej masz gwarancję, że 2 ostatnie elementy są posortowane. Itd. To sortowanie bąbelkowe: https://pl.wikipedia.org/wiki/Sortowanie_b%C4%85belkowe
13 paź 17:42