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