Jakoukoli sekvenci dat stejného typu lze reprezentovat jako seznam. Seznamy lze objednat a neuspořádat. V druhém případě způsobují určité potíže práce s daty, nalezení požadované hodnoty a přístup k prvkům seznamu. Seznam řetězcových proměnných je obvykle seřazen abecedně. Existuje mnoho metod řazení, v každém případě byste měli zvolit nejoptimálnější algoritmus.
Instrukce
Krok 1
Při výběru nejlepší metody třídění je třeba vzít v úvahu dvě věci: čas potřebný k operaci třídění a množství paměti potřebné pro pomocné úložiště. Algoritmy řazení, které nevyžadují další paměť, se označují jako řazení „na místě“. Jedním z nejjednodušších způsobů implementace je pomalé třídění bublin, které skenuje každou dvojici položek v seznamu a vyměňuje místa v závislosti na požadovaném pořadí.
Krok 2
Existuje rychlejší způsob řazení vyhledáním minimální nebo maximální položky v seznamu. V případě abecedního řazení musíte při každém procházení seznamu najít jeho maximální prvek - bude to řetězec začínající písmenem nejblíže začátku abecedy. Jakmile je řetězec nalezen, je při prvním průchodu zaměněn s úplně první položkou v seznamu. Při dalším zvážení seznamu je první místo vyloučeno, je hledán další maximální prvek, umístěn na druhém místě atd. Kód třídicího programu v C ++ metodou vyhledání maximálního prvku seznamu: 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; }}
Krok 3
Nejoptimálnějším řešením pro objednání dat řetězce v seznamu je řazení. Jeho podstata spočívá ve skutečnosti, že při každém průchodu seznamem existuje uspořádaná část seznamu určitého počtu prvků, takže další uvažovaný prvek je umístěn na vhodném místě v seznamu. C ++ kód algoritmu třídění vkládání: 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; }}