Python - algoritmi za sortiranje

poruka: 3
|
čitano: 3.393
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
8 godina
neaktivan
offline
Python - algoritmi za sortiranje

Pozdrav svima,

 

danas sam pisao test iz algoritama za sortiranje u Pythonu te sam izgubio bodove na jednom pitanju.

U udžbeniku po kojem radimo piše sljedeće:

 

O - gornja složenost

Ω - donja složenost

 

exchange sort (lista) = O(n²), Ω(n²)

selection sort (lista) = O(n²), Ω(n²)

insertion sort (lista) = O(n²), Ω(n)

bubble sort (lista) = O(n²), Ω(n)

quick sort po Hoareu (lista, rekurzija)= O(n²)(u pravilu - O(n log n)), Ω(n)

merge sort (lista) = O(n log n)

bucket sort (iz liste se kreira rječnik, prolazak kroz ključeve for petljom, dodavanje u novu listu) = O(n)

 

(u udžbeniku za neke algoritme nisu navedene Ω)

 

 

Pitanje glasi: Je li exchange sort najjednostavniji algoritam za sortiranje?

Ja sam odgovorio NE, jer bucket sort ima složenost O(n), a exchange O(n²).

 

Na kraju sam poslije testa našao tvrdnju u udžbeniku da je exchange sort najjednostavniji.

 

Zanima me da li sam ja pogriješio(ako jesam, molio bih pojašnjenje) ili je to greška u udžbeniku (inače udžbenik ima nekih grešaka)?

 

 

Unaprijed hvala,

HrcaA3000

 

Poruka je uređivana zadnji put pon 5.11.2018 20:26 (HrcaA3000).
 
1 0 hvala 0
11 godina
neaktivan
offline
Re: Python - algoritmi za sortiranje

Moguće je da se pitanje odnosi na jednostavnost implementacije pa je exchange stvarno najjednostavniji:

 

def exchange_sort(alist):
    for i in range(len(alist)):
        for j in range(i + 1, len(alist)):
            if alist[i] > alist[j]:
                alist[i], alist[j] = alist[j], alist[i]

L = [54, 26, 93, 17, 77, 31, 44, 55, 20]
exchange_sort(L)
print(L)

15 godina
offline
Re: Python - algoritmi za sortiranje

je, jer ne traži alociranje dodatnih resursa (memorije).. jednostavno, članovi niza zamjene mjesta ili vrijednost. Neovisno što može biti grešaka u udžbeniku, to je najjednostavniji sort, ali nije najefikasniji ako se postavi takvo pitanje za bzinu, odnosno ako efikasnost gledamo kao resurse-količinu memorije ili broj operacija ili potrošnju struje.. jer svakim pitanjem se odgovor mjenja.

-exchange je prvi-osnovni sort, najjednostavniji koji se uči, dok npr quick tad vidimo kao primjer brzine na istom HWu. Ostali ovise o uzorku i sl.

C64/TurboModul-OpenSourceProject.org.cn.部分作品为网上收集整理,供开源爱好者学习使用
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice