Orice secvență de date de același tip poate fi reprezentată ca o listă. Listele pot fi comandate și neordonate. În acest din urmă caz, lucrul cu datele, găsirea valorii dorite și accesarea elementelor din listă provoacă anumite dificultăți. Lista variabilelor șirului este de obicei sortată alfabetic. Există multe metode de sortare, în fiecare caz ar trebui să alegeți cel mai optim algoritm.
Instrucțiuni
Pasul 1
Atunci când alegeți cea mai bună metodă de sortare, trebuie luate în considerare două lucruri: timpul necesar operațiunii de sortare și cantitatea de memorie necesară pentru stocarea auxiliară. Algoritmii de sortare care nu necesită memorie suplimentară sunt denumiți sortări „în loc”. Unul dintre cele mai ușor de implementat este un sortare lentă cu bule, care scanează fiecare pereche de articole din listă și schimbă locurile în funcție de ordinea dorită.
Pasul 2
Există o metodă de sortare mai rapidă prin găsirea elementului minim sau maxim din listă. În cazul sortării alfabetice, de fiecare dată când parcurgeți lista, trebuie să găsiți elementul maxim al acestuia - acesta va fi un șir care începe cu litera cea mai apropiată de începutul alfabetului. Odată găsit, șirul este schimbat cu primul element din listă la prima trecere. După o analiză ulterioară a listei, primul loc este exclus, următorul element maxim este căutat, plasat pe locul doi etc. Codul programului de sortare în C ++ prin metoda de găsire a elementului maxim al listei: String Arr [20], cTemp; int N = 20, Max, Pos; for (int i = 0; i <N- 1; i ++) {Max = Arr ; Pos = i; for (int j = 0; j <N; j ++) {if (Arr [j] <Max) {Max = Arr [j]; Pos = j; } cTemp = Arr ; Arr = Arr [Pos]; Arr [Pos] = cTemp; }}
Pasul 3
Cea mai optimă soluție pentru ordonarea datelor șirului dintr-o listă este sortarea prin inserție. Esența sa constă în faptul că, la fiecare trecere prin listă, există o parte ordonată a listei unui anumit număr de elemente, astfel, următorul element luat în considerare este plasat într-un loc adecvat din listă. Cod C ++ al algoritmului de sortare a inserției: 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--; dacă (j <0) pauză; Arr [j + 1] = cTemp; }}