ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – OPAKOVANÝM VÝBĚREM NEJVĚTŠÍHO PRVKU (SELECTSORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise, Hlinsko, Adámkova 55leden 2013
PRINCIP – mezi N prvky pole zjistíme index největšího prvku – vzájemně zaměníme největší prvek a poslední prvek (N-tý) – pak hledáme největší prvek mezi (N–1) prvky (N-tý už neuvažujeme, je již tam, kde patří) – tento nalezený (vlastně druhý největší) zaměníme s prvkem s indexem (N–1) (předposledním) – pak hledáme největší prvek z (N–2) prvků atd. Poznámka Lze i naopak – vyhledáme nejmenší prvek a vyměníme s prvním, atd.
Příklad Vysvětlete tuto metodu na zadané posloupnosti čísel, postup průběžně zapisujte: 6, 20, 4, 10, 17, 1, 12, │ │ │ │ │ │
Příklad a) Je dána posloupnost N celých kladných čísel. Vytvořte program, který – prvky posloupnosti načte do jednorozměrného pole, – prvky posloupnosti uspořádá podle velikosti vzestupně s využitím metody opakovaného výběru největšího prvku (selectsort), – nakonec uspořádanou posloupnost vypíše. b) Vytvořený program přepište a odlaďte na počítači.
program SELECTSORT (input, output); uses CRT; var N, I, K, MAX, IMAX: integer; A: array [1..100] of integer; begin clrscr; writeln (‘Zadej počet čísel N:‘); readln (N); for I := 1 to N do begin writeln (‘Zadej číslo: ‘); read(A[I]) end; for I := N downto 2 do begin MAX := A[1]; IMAX := 1; for K := 2 to I do if A[K] > MAX then begin MAX := A[K]; IMAX := K {nalezení indexu největšího prvku} end; A[IMAX] := A[I]; A[I] := MAX {proběhla výměna} end; for I := 1 to N do writeln (A[I], ‘ ⌴ ‘); readkey end.
Použité zdroje HUBKA, J. a L. SILVERIO. Sbírka příkladů ze základů programování. Krajský pedagogický ústav Hradec Králové: Sdružení uživatelů počítačů JSEP a SMEP Hradec Králové, Všechny grafické prvky a obrázky algoritmů jsem vytvořila sama s využitím volně šiřitelného programu Open Office.