Bilo koji slijed podataka istog tipa može se predstaviti kao lista. Liste se mogu poredati i poređati. U potonjem slučaju rad s podacima, pronalaženje željene vrijednosti i pristup elementima liste uzrokuju određene poteškoće. Lista varijabli niza obično se sortira po abecedi. Postoji mnogo metoda sortiranja, u svakom slučaju trebali biste odabrati najoptimalniji algoritam.
Instrukcije
Korak 1
Pri odabiru najbolje metode sortiranja treba uzeti u obzir dvije stvari: vrijeme potrebno za operaciju sortiranja i količinu memorije potrebne za pomoćno skladištenje. Algoritmi za sortiranje koji ne zahtijevaju dodatnu memoriju nazivaju se sortiranjima "na mjestu". Jedna od najjednostavnijih za primjenu je polagana sortiranje oblačića koji skenira svaki par stavki na popisu i zamjenjuje mjesta ovisno o željenom redoslijedu.
Korak 2
Postoji brži način sortiranja pronalaženjem minimalnog ili maksimalnog broja stavki na listi. U slučaju sortiranja po abecedi, svaki put kad prođete kroz listu, morate pronaći njegov maksimalni element - to će biti niz koji počinje slovom najbližim početku abecede. Jednom pronađen, niz se zamijeni s prvom stavkom na listi pri prvom prolazu. Daljim razmatranjem liste prvo mjesto se isključuje, traži se sljedeći maksimalan element, postavlja se na drugo mjesto itd. Kôd programa za sortiranje u C ++ metodom pronalaženja maksimalnog elementa liste: String Arr [20], cTemp; int N = 20, Max, Pos; for (int i = 0; i <N- 1; i ++) {Max = Arr ; Poz = i; za (int j = 0; j <N; j ++) {if (Arr [j] <Max) {Max = Arr [j]; Poz = j; } cTemp = Arr ; Arr = Arr [Poz]; Arr [Pos] = cTemp; }}
Korak 3
Najoptimalnije rješenje za poredak podataka niza na listi je sortiranje umetanja. Njegova suština leži u činjenici da sa svakim prolaskom kroz listu postoji uređeni dio liste određenog broja elemenata, pa se sljedeći element koji se razmatra postavlja na odgovarajuće mjesto na listi. C ++ kôd algoritma za sortiranje umetanja: String Arr [20], cTemp; int N = 20; for (int i = 1, j = 0; i <N; i ++) {cTemp = Arr ; j = i - 1; while (cTemp <Arr [j]) {Arr [j + 1] = Arr [j]; j--; if (j <0) break; Arr [j + 1] = cTemp; }}