Sunteți pe pagina 1din 8

Sortare prin metoda de

numãrare
Buzgãu Cristian Gh.
Clasa a XI-a C
Profesor : Kabai Timea
Teorie
Pentru fiecare element din vector se număra
cate elemente mai mici decât el exista in vector.
Acest algoritm păstrează ordinea dată pentru
elementele nedistincte (Dacă x[i] reprezintă
chei de ordonare neunice, de exemplu notele
unor elevi {1, 2, ... , 10} ).
Algoritmul calculează poziţia pe care se va afla
fiecare element prin numărarea
valorilor mai mici sau egale decât acesta.
Enuntul problemei

• Sa se ordoneze crescator un vector cu


termenii x[1], x[2], ..., x[n] prin metoda de
numarare.
Variabile
• a: vectorul, sirul
• i,j: variabile de tip integer folosite pentru
traversarea sirului;
• n: lungimea sirului, variabila de tip integer;
• k: variabila de tip integer, folosit pentru
memorarea numarului de elemente care sunt
mai mari decat elementul parcurs;
• aux: variabila detip integer, folosit pentru
interschimbarea elementelor.
Exemplu
n=4

i= 1 2 3 4
8 0 -3 5
i j Relatia k Pozitia in vector
1 8=8 0
1 2 8>0 1 4
3 8>-3 2
4 8>5 3
1 0<8 0
2 0=0 0 2
2 3 0>-3 1
4 0<5 1
1 -3<8 0
3 2 -3<0 0 1
3 -3=-3 0
4 -3<5 0
1 5<8 0
2 5>0 1 3
4 3 5>-3 2
4 5=5 2
Problema in limbajul Pascal
• program numarare;
• type vect=array[1..100] of integer;
• var a:vect;
• i,j,n,k,aux:integer;
• begin
• write (’n = ’) ; readln (n);
• for i:=1 to n do begin
• k:=0;
• for j:=1 to n do
• if (a[i]>=a[j]) AND (i<>j) then
• k:=k+1;
• aux:=a[i];
• a[i]:=a[k+1];
• a[k+1]:=aux;
• end;
• for i:= 1 to n do
• write (a[i],’ ’);
• readln;
• end.

S-ar putea să vă placă și