Transcript n + 1

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
• 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
A[j] a2
Taip
a3
a3
a4
....... an-1
a4
.......
Jei
a4>a1
an-1
an
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]
c := A[i];
A[i] := A[j];
A[j] := c;
Pabaiga
Ne
MinMax metodas
procedure MinMaxB(var A : mas; n : integer);
var i, j : integer;
c : integer;
// Pagalbinis kintamasis elementų sukeitimui
begin
for i := 1 to n – 1 do
for j := i + 1 to n do
if A[j] > A[i] //rikiavimo raktas
then begin
c := A[i]; A[i] := A[j]; A[j] := c;
end;
end;
MASYVO ELEMENTŲ
ĮTERPIMAS IR
ŠALINIMAS
Į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];
// Perkeliama reikš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 masyvo elementų skaičių.