110 likes | 367 Views
DUOMENŲ RIKIAVIMAS. Duomenų rikiavimo aldoritmai. Minmax (intervalinis) Burbulas (porinių sukeitimų) Dalyba pusiau (mišrus) Pilnas minmax (intervalinis) Įterpimu (intarpų) Vienas paprasčiausių ir populiariausių algoritmų yra rikiavimas išrinkimo metodu ( MinMax ). Žodinis algoritmas.
E N D
Duomenų rikiavimo aldoritmai • Minmax (intervalinis) • Burbulas (porinių sukeitimų) • Dalyba pusiau (mišrus) • Pilnas minmax (intervalinis) • Įterpimu (intarpų) Vienas paprasčiausių ir populiariausių algoritmų yra rikiavimas išrinkimo metodu (MinMax)
Žodinis algoritmas • Masyve tarp elementų a1, a2, a3, ... an ieškoma didesnio už a1 ir radus jis sukeičiamas vietomis su pirmuoju a1. • Toliau masyve tarp elementų a2, a3, a4, ... an ieškoma didesnio už a2 ir radus jis sukeičiamas vietomis su antruoju a2. (pirmuoju paieškos intervale). • Toliau masyve tarp elementų a3, a4, a5, ... an ieškoma didesnio už a3 ir radus jis sukeičiamas vietomis su trečiuoju a3. (pirmuoju paieškos intervale). • Veiksmai kartojami tol kol liks vienas elementas.
A[i] a1 a2 a3 a4 ....... an-1 an-1 an a2 a3 a4 ....... A[j] Jei a4>a1 Taip
Pradžia MinMaxB (var A: mas; n: integer) Kintamieji c: real; i, j: integer i := 1, n-1 j := i + 1, n Taip A[j] > A[i] Ne c := A[i]; A[i] := A[j]; A[j] := c; Pabaiga
MinMax metodas procedureMinMaxB(var A : mas; n : integer); var i, j : integer; c : integer;// Pagalbinis kintamasis elementų sukeitimui begin fori := 1 to n – 1do forj := i +1 to n do ifA[j] > A[i] //rikiavimo raktas thenbegin c := A[i]; A[i] := A[j]; A[j] := c; end; end;
Įterpimas nurodytoje masyvo vietoje k Const CN = 100; type MAS = array [1..CN] of real; var A: MAS; n: integer; i := n; While i >= k do begin A[i+1] := A[i]; i := i – 1; end; A[k] := naujas; n := n + 1; //masyve pasidarė 1 elementu daugiau
Įterpimas nurodytoje masyvo vietoje k n := n + 1; for i := n downto k + 1 do A[i] := A[i-1]; A[k] := naujas; Masyvo viduje (nerikiuotame masyve) n := n + 1; A[n] := A[k];// Perkeliamareikšmė į galą A[k] := naujas; // Įrašoma nauja reikšmė Masyvo gale n:= n+1; A[n] := naujas;
Elemento šalinimas iš masyvo • Paskutinio elemento n := n – 1; • Viduje esančio elemento (nerikiuotame masyve) A[k] := A[n]; n := n - 1; • Viduje esančio elemento (rikiuotame masyve) for i := k to n - 1 do A[i] := A[i+1]; n := n - 1;
Elemento šalinimas iš masyvo i := k; While i < n do begin A[i] := A[i+1]; i := i + 1; end; n := n - 1; //sumažinome masyvoelementų skaičių.