Bubble vrsta jednodimenzionalnog polja: algoritam, programski kod na jeziku C

U radu s informacijama najprofitabilniji načini pohranjivanja su strukture i nizovi. Potonji može sadržavati bilo koju vrstu podataka iste vrste, što je prikladno za korištenje u radu programa. Često se koriste u internetskim trgovinama iu razvoju igara. Stoga se podaci u njima više puta razvrstavaju i mijenjaju na mjestima, a iznad njih se izvode logičke ili matematičke operacije. Jedan od načina za postavljanje reda u nizu je sortiranje mjehurića. Ova će publikacija ispitati programski kod na jeziku C i logiku permutacija.


Algoritam za razvrstavanje niza

Tehnička složenost programera ne predstavlja sortiranje mjehurića jednodimenzionalnog niza, iako se rijetko koristi zbog niske učinkovitosti. To se češće smatra u fazi učenja najjednostavnijim. Međutim, to je daleko od toga da bude najučinkovitije. Njegov algoritam sastoji se od sekvencijalne usporedbe znamenki i recipročnog prepisivanja stanica ako se stanje promatra.

Opis sortiranja korak po korak

Pri prvoj iteraciji, dva susjedna broja postupno se uspoređuju. Ako je lijevo veće, tada se prepisuje s desne strane. Minus 8 i 0 uvjeti nisu zadovoljeni. Stoga se mjesta ne mijenjaju. Nula i 5 također nisu prikladne. 5 i 3 - uklapanje. Međutim, na takvoj iteraciji okvir čitanja ne pada u prvih pet, i pomiče se udesno, jer je 5 uspoređen s nulom. To znači da se mijenja sljedeći par mjesta - 3 i 9. DaljeSve zamjene su ponuđene čitatelju da se pregledaju neovisno bez komentara autora i da se prouči algoritam razvrstavanja mjehurića.


Kao rezultat svih iteracija, polje se postupno sortira, a to se događa uglavnom na sljedeći način: veliki pozitivni brojevi brzo se pomiču u desno, dok se manji i negativni polako preusmjeravaju ulijevo. Izgleda da se mjehurići plina u tekućini brzo pojavljuju. Zbog ove analogije, algoritam je nazvan sortiranje mjehurića.

Procjena složenosti računanja

Idealni algoritam za razvrstavanje trebao bi biti što je moguće brži. U isto vrijeme trebao bi oduzeti malu količinu procesora i memorijskih resursa. I takav proces kao što je sortiranje mjehurića ne može biti energetski najučinkovitiji i profitabilniji. Stoga nije našao široku primjenu. Ako u ovom trenutku ima manje memorije, onda bi procesorski resursi trebali brinuti. Budući da digitalni nizovi ne moraju biti samo veliki, nego i ogromni, trošak računalnih resursa bit će nepredvidljiv. Ako se sortiranje mjehurića u načelu brzo nosi s uređenjem reda u relativno malom nizu, onda u velikom može doći do rušenja zbog prekomjerne iskorištenosti resursa. To znači da će se narušiti svojstvo univerzalnosti inherentno algoritmu. Štoviše, sorta mjehurića ima N-kvadratnu složenost i vrlo je daleko od logičke složenosti N. Osim toga, rizik od neuspjeha u obradi velikog niza povećava šanse za gubitak podataka zbog prepisivanja stanica. Mnogo profitabilnije uU ovom planu bit će sortiranje umetaka ili Schellovog algoritma.

Šifra programa

Računalni kod za C jezik naveden u grafičkom dodatku omogućuje sortiranje mjehurića. Izdana je kao zasebna funkcija tipa void. Ne vraća nikakve vrijednosti, ali korištenje pokazivača mijenja mjesta u elementima ovisno o uvjetima sortiranja. U ovom slučaju, kod rješava problem mjehurića sortiranja niza prirodnih brojeva u rastućem redoslijedu.
Da bi izvršio ovu funkciju, korisnik mora stvoriti polje koje treba popuniti s potrebnim vrijednostima. To možete učiniti ručno navodeći dimenziju i broj elemenata na početku programa. U isto vrijeme možete popuniti polje s konstantnim vrijednostima. Druga mogućnost je kreiranje univerzalnog programa deklariranjem velikog jednodimenzionalnog niza od 100 elemenata.

Proglašavanje i inicijalizacija niza

Postavljanjem cjelobrojne varijable i davanjem vrijednosti čitane s tipkovnice, možete ograničiti broj ćelija koje će biti popunjene. Također možete implementirati funkciju unosa elemenata niza pomoću tipkovnice pomoću funkcije scanf ("% d", & amp; value). U ovom primjeru, "% d" je modifikacijski niz koji kaže da će se nakon skeniranja dobiti cijeli broj. Vrijednost varijable će pohraniti vrijednost veličine jednodimenzionalnog cjelobrojnog niza. Za korištenje algoritma za sortiranje, ime polja i njegova veličina moraju se proslijediti funkciji. U situaciji prikazanoj u grafičkoj aplikaciji, poziv funkcijeSortiranje će izgledati ovako: BubleSort (dataArray, sizeDataArray). Naravno, na kraju retka nakon funkcije trebate staviti točku sa zarezom umjesto točke, kako to zahtijevaju sintaksna pravila programa. Dakle, dataArray je naziv niza koji želite sortirati, a sizeDataArray je njegova veličina.
Prijenos ovih parametara u funkciju BubleSort () rezultirat će činjenicom da se umjesto korištenja sizeArray, kao što se može vidjeti na slici, operacije u stvarnom programu izvršavaju iz sizeDataArray. To znači da će funkcija BubleSort () koristiti cijeli niz podataka dataArray. Slično, pozivaju se funkcije printArrayFunction () i ArrayIntegerInputFunction (). Prvi je odgovoran za ispis, to jest, za izlazak stavki na konzolu. A drugi je potreban da bi ga ispunio s elementima koje je unio korisnik s tipkovnice. Ovaj stil programiranja, kada se izolirane operacije izvode kao funkcije, uvelike povećava čitljivost koda i ubrzava njegov razvoj. U takvom programu, odvojeno se upisuje polje s tipkovnice, a ispisuje se ista vrsta mjehurića. Potonji se može koristiti za raspoređivanje podataka ili kao sekundarna funkcija, koja nastoji pronaći minimum i maksimum niza.

Razvrstavanje umetaka

Sortiranje metodom umetanja osigurava postupnu usporedbu svakog elementa i konstrukciju lanca koji je već sortiran prema stanju elemenata. Kao rezultat toga, rezultat svake naknadne usporedbe je traženje ćelije koja se može smjestiti u novu vrijednost. No, umetanje svakog od njih izvodi se već razvrstani dio polja.
Takva obrada je brža i ima manje složenosti računanja. Kod u jeziku C prikazan je u grafičkom dodatku.
Također je predstavljen u obliku funkcije, koja kao argumenti proslijeđeni imenu moraju urediti polje i veličinu polja. Ovdje možete vidjeti kako je sporije sortiranje mjehurića. Umeci su slični radu koji je obavljen mnogo brže i ima kompaktan programski kod.

Povezane publikacije