A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
Előző változat mindkét oldalon Előző változat | |||
inf-prog-fszi:rendezes_minimum-maximum-kivalasztassal [2017/06/21 12:26] beistvan |
inf-prog-fszi:rendezes_minimum-maximum-kivalasztassal [2017/06/23 17:55] (aktuális) beistvan |
||
---|---|---|---|
Sor 1: | Sor 1: | ||
+ | ====== Rendezés minimum- (maximum-) kiválasztással ====== | ||
+ | |||
+ | **Módszer lényege**: Felesleges cserék kiküszöbölése érdekében két segédváltozót vezetünk be (legkisebb elem értékének és indexének). | ||
+ | |||
+ | <code bash minimumkiv.txt> | ||
+ | Eljárás: | ||
+ | Ciklus I = 1-től N - 1-ig | ||
+ | INDEX := I | ||
+ | ÉRTÉK := A(I) | ||
+ | Ciklus J = I + 1-től N-ig | ||
+ | Ha A(J) < ÉRTÉK akkor ÉRTÉK := A(J) | ||
+ | INDEX := J | ||
+ | Ciklus vége | ||
+ | A(INDEX) := A(I) | ||
+ | A(I) := ÉRTÉK | ||
+ | Ciklus vége | ||
+ | Eljárás vége. | ||
+ | </ | ||
+ | |||
+ | DEMO | ||
+ | |||
+ | Hatékonysági mutatók\\ | ||
+ | **Tárigény**: | ||
+ | **Összehasonlítások száma**: N*(N-1)/2 \\ | ||
+ | **Mozgatások száma**: 3*(N-1)-től 3*(N-1)+(N*N/ | ||
+ | **Végrehajtási idő**: 1650 s (N=500) | ||
+ | |||
+ | |||
+ | Pascal forráskód | ||
+ | |||
+ | Rendezés minimum-kiválasztással. | ||
+ | |||
+ | <code pascal rendezes_minimum_kivalasztassal.pas> | ||
+ | program rendezes_minimum_kivalasztassal; | ||
+ | const n = 10; | ||
+ | var a: array [1..n] of integer; | ||
+ | i, j, min, ind: integer; | ||
+ | begin | ||
+ | randomize; | ||
+ | //A tömb elkészítése | ||
+ | for i:=1 to n do | ||
+ | begin | ||
+ | a[i]: | ||
+ | write(a[i], ' '); | ||
+ | end; | ||
+ | Writeln; | ||
+ | //Tömb rendezése minimum-kiválasztással | ||
+ | for i:=1 to n-1 do | ||
+ | begin | ||
+ | ind:=i; | ||
+ | min:=a[i]; | ||
+ | for j:=i+1 to n do | ||
+ | if a[j]<min then | ||
+ | begin | ||
+ | min:=a[j]; | ||
+ | ind:=j; | ||
+ | end; | ||
+ | a[ind]: | ||
+ | a[i]:=min; | ||
+ | end; | ||
+ | |||
+ | writeln(' | ||
+ | for i:=1 to n do | ||
+ | write(a[i], ' '); | ||
+ | readln; | ||
+ | end. | ||
+ | |||
+ | </ | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Órai gyakorlat | ||
+ | |||
+ | <code pascal minimum_kereseses_rendezes.pas> | ||
+ | program minimum_kereseses_rendezes; | ||
+ | const n=8; | ||
+ | var i,j, index, ertek : integer; | ||
+ | a: array [1..n] of integer; | ||
+ | begin | ||
+ | writeln(' | ||
+ | for i:=1 to n do | ||
+ | begin | ||
+ | write(' | ||
+ | end; | ||
+ | for i:=1 to n-1 do | ||
+ | begin | ||
+ | index:=i; | ||
+ | ertek: | ||
+ | for j:=i+1 to n do | ||
+ | if a[j]< | ||
+ | begin | ||
+ | ertek: | ||
+ | index:=j; | ||
+ | end; | ||
+ | a[index]: | ||
+ | a[i]: | ||
+ | end; | ||
+ | write(' | ||
+ | for i:=1 to n do | ||
+ | write(a[i]: | ||
+ | readln; | ||
+ | end. | ||
+ | </ |