Sortați după metoda de schimb simplu

De la stânga la dreapta, două elemente adiacente sunt comparate la rândul lor, iar dacă poziția lor relativă nu corespunde condiției de comandă specificate, atunci ele schimbă locurile. Apoi, luați următoarele două elemente adiacente și așa mai departe până la capătul matricei.







După o astfel de trecere la ultima poziție n a matricei, va exista un element maxim (sau minim) (primul "balon" plutit "). Deoarece elementul maxim (sau minim) se află deja în ultima poziție, al doilea pas de schimb este executat înainte de elementul (n-1). Și așa mai departe. Pasajul total necesar (n-1).

Sarcină. În notebook, trageți o diagramă a lucrării algoritmului considerat matrice aleasă arbitrar.

Luați în considerare procedura care implementează algoritmul de mai sus:

Procedură Obmen (Var și Array1);
var
i, j, f, g: întreg;
începe
pentru i: = n downto 2 nu
pentru j: = 1 până la i-1






dacă o [j]> a [j + 1]
atunci
începe
f: = a [j];
a [j]: = a [j + 1];
a [j + 1]: = f;
se încheie;
End;

Sarcină. Efectuați un program pentru sortarea unei matrice unidimensionale prin metoda luată în considerare.

Luați în considerare utilizarea recursiunii pentru a construi un algoritm pentru sortarea valorilor unei matrice.

Algoritmul este implementat după cum urmează: într-un anumit segment al matricei este selectată valoarea centrală (mijloc); Toate elementele din partea stângă a segmentului care depășesc valoarea centrală se mută în partea dreaptă și invers. Următorul pas (pentru care sunt utilizate apeluri recursive ale aceleiași proceduri), algoritmul este repetat pentru ambele părți ale segmentului.

Luați în considerare procedura de ordonare a valorii ascendente din matricea Massiv în gama indexului stânga stânga.

Procedură QuickSort (Stânga, Dreapta întreg; Masivă .Array1);
var
i, j, x, y. întreg;
începe
i: = Stânga;
j: = dreapta;
x: = Massiv [(Stânga + Dreapta) div 2];<>
repeta
în timp ce Massiv [i] Inc (i);
în timp ce Massiv [j]> x face
Dec (j);
dacă i<=j
atunci
începe
y: = Massiv [i];
Massiv [i]: = Massiv [j];
Massiv [j]: = y;
Inc (i);
Dec (j);
se încheie;
până când i> j;
dacă este Stânga atunci
QuickSort (stânga, j);
dacă i atunci
QuickSort (i, dreapta);
End;







Articole similare

Trimiteți-le prietenilor: