Sortiranje polja C/C++

poruka: 14
|
čitano: 8.162
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
protjeran
offline
Sortiranje polja C/C++

Čitam knjigu od Željka Kovačevića C++ Analiza i primjena i davno sam prešao polja, stim da sam preskočio sortiranje jer ništa apsolutno neshvaćam.
Sad bi se volio vratiti na to sortiranje i te dvostruke petlje i Selection Sort i ostale.
Nemam pojma o sortiranju kod u knjizi je zbunjujući, ovjašnjava nekako slabo.
Dakle, šta je sortiranje, kako se izvršava, ima li potrebe za njegovim učenjem?

SENAID
 
0 0 hvala 0
17 godina
offline
Sortiranje polja C/C++

Pa raspali iteraciju po iteraciju počevši od bubble sorta - ne moraš učiti napamet - a dobro će ti doći da dobro utemejiš rad dvostrukih petlji

koliko znam @Tracer ima i program koji vizualno simulira rad tih algoritama - pa ga zamoli da ti da link kad dođe.

Poruka je uređivana zadnji put čet 15.9.2011 21:57 (Floki).
 
0 0 hvala 1
14 godina
neaktivan
offline
Re: Sortiranje polja C/C++

Sortovi su komplicirani za početnike i obično se proučavaju kao zasebna cjelina. Zato ne muči se previše već pokušaj shvatiti princip sortiranja, a onda će i sam code biti razumljiviji. Probaj ovu simulaciju koju sam još davno napravio:

 

http://forum.sztvz.hr/attachment.php?attachmentid=1099&d=1272007889

Edit: Tracer (Željko Kovačević)

17 godina
neaktivan
offline
Re: Sortiranje polja C/C++
Senaid_gates kaže...

Čitam knjigu od Željka Kovačevića C++ Analiza i primjena i davno sam prešao polja, stim da sam preskočio sortiranje jer ništa apsolutno neshvaćam.
Sad bi se volio vratiti na to sortiranje i te dvostruke petlje i Selection Sort i ostale.
Nemam pojma o sortiranju kod u knjizi je zbunjujući, ovjašnjava nekako slabo.
Dakle, šta je sortiranje, kako se izvršava, ima li potrebe za njegovim učenjem?

Hm. Sortiranje. Sortiranje je slaganje nekih objekata po nekom redu i redoslijedu. Ako si u knjiznici recimo, najvjerojatnije vidjet ces knjige sortirane po temi. Na ovoj polici su knjige vezane uz znanost, na ovoj uz knjizevnost, na onoj trecoj knjige vezane uz kuhanje itd. Mozda su poredane po autoru. Mozda po naslovima, naslovi koji pocinju na A su na lijevoj strani polica, a kak idemo sve vise desno dolazimo do naslova kojima ime pocinje na slovo Z. To je dakle sortiranje. Slaganje nekih objekata (pod objekt mislim na bilo sto u prirodi) po nekom redu i redoslijedu. Koji je cilj sortiranja? Pa nadam se da je ocit. Lakse se snaci ako su knjige poredane nekim redom nego da su nabacane bezveze. Isto tako, lakse se snaci medu podacima ako su sortirani nekim redom nego random nabacani. Do danas je otkriveno vise nacina i vrsta sortova, pocevsi od najjednostavnijih kao sto je to Bubble sort, pa sve do kompliciranijih kao sto su to Quicksort, Heapsort ili Introsort. Ako zelis, mozemo tu obraditi jednostavnije sortove (a mozda i koji kompliciraniji), ali treba znati neke stvari prije, kao sto je npr. O-notacija.

Gentoo... it's like wiping your ass with silk. Or sandpaper.
14 godina
protjeran
offline
Sortiranje polja C/C++

Hvala, TracerCPP je suspendiran :(

SENAID
 
0 0 hvala 0
14 godina
protjeran
offline
Re: Sortiranje polja C/C++
1domagoj1 kaže...
Senaid_gates kaže...

Čitam knjigu od Željka Kovačevića C++ Analiza i primjena i davno sam prešao polja, stim da sam preskočio sortiranje jer ništa apsolutno neshvaćam.
Sad bi se volio vratiti na to sortiranje i te dvostruke petlje i Selection Sort i ostale.
Nemam pojma o sortiranju kod u knjizi je zbunjujući, ovjašnjava nekako slabo.
Dakle, šta je sortiranje, kako se izvršava, ima li potrebe za njegovim učenjem?

Hm. Sortiranje. Sortiranje je slaganje nekih objekata po nekom redu i redoslijedu. Ako si u knjiznici recimo, najvjerojatnije vidjet ces knjige sortirane po temi. Na ovoj polici su knjige vezane uz znanost, na ovoj uz knjizevnost, na onoj trecoj knjige vezane uz kuhanje itd. Mozda su poredane po autoru. Mozda po naslovima, naslovi koji pocinju na A su na lijevoj strani polica, a kak idemo sve vise desno dolazimo do naslova kojima ime pocinje na slovo Z. To je dakle sortiranje. Slaganje nekih objekata (pod objekt mislim na bilo sto u prirodi) po nekom redu i redoslijedu. Koji je cilj sortiranja? Pa nadam se da je ocit. Lakse se snaci ako su knjige poredane nekim redom nego da su nabacane bezveze. Isto tako, lakse se snaci medu podacima ako su sortirani nekim redom nego random nabacani. Do danas je otkriveno vise nacina i vrsta sortova, pocevsi od najjednostavnijih kao sto je to Bubble sort, pa sve do kompliciranijih kao sto su to Quicksort, Heapsort ili Introsort. Ako zelis, mozemo tu obraditi jednostavnije sortove (a mozda i koji kompliciraniji), ali treba znati neke stvari prije, kao sto je npr. O-notacija.

Da, vidim u knjizi spominje O-notaciju?, naravno ko ima volje bilo bi dobro da se uradi nekoliko primjera uvezi sortiranja, jer ima malo, modža nimalo sličnih tema.

SENAID
14 godina
neaktivan
offline
Re: Sortiranje polja C/C++
Senaid_gates kaže...

Hvala, TracerCPP je suspendiran :(

Nakratko samo ;) Tako je kad se svakome dopusti da koristi moj acc...

 

Edit: Pa u knjizi ti je opisano kako algoritmi rade a i što je O - notacija. Npr. za Selection sort dan je primjer:

 

#include<iostream.h>
#define MAX 5
void main(){

    int i, j, min, pom, polje[MAX] = {-5, 3, 4, 2, 6};
    // Selection Sort
    for (i = 0; i < MAX; i++) {
        min = i; // minimalni je onaj element na početku polja...
        for (j = i + 1; j < MAX; j++)
            if (polje[j] < polje[min]) min = j;
                pom = polje[i]; // zamjena varijabli u kojoj se indeks...
                polje[i] = polje[min]; // najmanjeg elementa u dijelu polja...
                polje[min] = pom; // postavlja na početak sortiranog dijela  polja
    }
    for(i = 0; i < MAX; i++)
        cout<< polje[i] << "\t";
}

Poruka je uređivana zadnji put čet 15.9.2011 22:14 (tvzovac).
17 godina
offline
Sortiranje polja C/C++

Sigurno je neka greška ili zabuna.

 
1 0 hvala 0
14 godina
neaktivan
offline
Re: Sortiranje polja C/C++
Floki kaže...

Sigurno je neka greška ili zabuna.

Moja greška (što sam ostavio otvoren bug i izjurio van iz sobe...) no ništa strašno. Još 2 i pol dana :)

Poruka je uređivana zadnji put čet 15.9.2011 22:17 (tvzovac).
17 godina
offline
Re: Sortiranje polja C/C++
tvzovac kaže...
Floki kaže...

Sigurno je neka greška ili zabuna.

Moja greška (što sam ostavio otvoren bug i izjurio van iz sobe...) no ništa strašno. Još 2 i pol dana :)

pa eto - ništa strašno{#}

nije to ništa - ajd' da se malo našalimo

žena od mog prijatelja se dokopala njegovog e-mail passworda - kad ono - slike ljubavnice u inbox-u u malo slobodnijim pozama

e to su već ozbiljne stvari - još se ne nadzire rasplet{#} 

 

Poruka je uređivana zadnji put čet 15.9.2011 22:30 (Floki).
14 godina
neaktivan
offline
Re: Sortiranje polja C/C++

edit: inače, znam lika koji je zbog takve stvari raskopao obitelj. Na kraju od njega otišla žena s četvero djece a i ljubavnica prekinula (već udana žena)... kako je tad izgledao mislio sam da mu ne bi pomogao niti cijeli tim psihijatara. No život ide dalje. Djecu viđa, našao si drugu i sad je hiperaktivan (sretan) kao tinejdžer, a skoro mu 50.

 

Poruka je uređivana zadnji put čet 15.9.2011 23:07 (tvzovac).
17 godina
neaktivan
offline
Sortiranje polja C/C++

Ajmo nazad na sortiranje ;)

 

O-notacija je notacija kojom se matematicari sluze za opisivanje brzine rasta funkcija i redova. Posebno se koristi u informatici za opisivanje vremenske slozenosti nekog algoritma tako da vidimo koliko je zahtjevno i slozeno izracunavanje.

 

Iako postoji puno vise vremenskih slozenosti evo ih samo par koje je vrlo lako razumjeti.

 

Recimo:

 

O(1) - konstantna vremenska slozenost. Primjer konstantne vremenske slozenosti je odredivanje dali je broj paran ili neparan. Kako se odreduje parnost/neparnost broja? Najjednostavnije, if statementom. if(i % 2 == 0), dakle ako je broj paran i % 2 ce biti 0, u suprotnom je neparan. To je to, dakle jednom se izracuna ovaj modulo i gotovo. To je konstantna slozenost.

 

O(n) - linearna vremenska slozenost. Primjer linearne vremenske slozenosti je trazenje najmanjeg elementa u polju. Dakle, postavis varijablu najmanji_broj i stavis prvi element polja u nju. Zatim ides po polju i svaki puta kad naletis na manji element od elementa u varijabli najmanji_broj stavis taj manji u varijablu i tak do kraja. Znaci moras proci cijelo polje od pocetka do kraja. Polje ima n elemenata stoga je i slozenost O(n).

 

O(n2) - kvadratna vremenska slozenost. Primjer je trazenje najmanjeg elementa u kvadratnoj matrici. Dakle, ovdje osim sto ides po retcima, moras ici i po stupcima i zato je slozenost n2, jer imas n redaka i n stupaca.

 

Ove primjere vremenskih slozenosti je najlakse razumijeti, pa se nadam da si dobio neku intuiciju o vremenskim slozenostima.

Gentoo... it's like wiping your ass with silk. Or sandpaper.
 
3 0 hvala 1
14 godina
neaktivan
offline
Sortiranje polja C/C++

A asimptotska složenost?

 
1 0 hvala 0
17 godina
neaktivan
offline
Re: Sortiranje polja C/C++
tvzovac kaže...

A asimptotska složenost?

To bas ne znam najbolje.

Gentoo... it's like wiping your ass with silk. Or sandpaper.
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice