Documente Academic
Documente Profesional
Documente Cultură
• int vect [25] – am declarat un tablou unidimensional (vector) cu numele vect, de maxim 25 elemente
de tip întreg. Elementele vectorului au indicii în intervalul [0,24].
• float x [55] – am declarat un tablou unidimensional (vector) cu numele x, de maxim 55 elemente
de tip float. Elementele vectorului au indicii în intervalul [0,54].
!Alte modalități de declarare a vectorilor:
a) # define maxim 10 //am definit constanta maxim cu valoarea 10
char vect[maxim]; //am declarat un tablou unidimensional (vector) cu numele vect, de maxim 10
elemente de tip caracter. Elementele vectorului au indicii în intervalul [0,9].
b) tip_elemente_vector nume_vector [dimensiune_maximă_vector]= lista de valori;
Exemple:
➢ int vect[6]={21,22,23,24,25,26}
➢ float x[5]={2.3, 7.5, 2.15, 4.39, 9.1}
!Atunci când declarăm un vector cu inițializarea elementelor sale, numărul maxim de elemente ale
tabloului nu trebuie precizat neapărat deoarece compilatorul determină automat mărimea tabloului în
funcție de numărul de elemente inițializate.
Exemple:
➢ char vect[]={‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’}
➢ float x[]={2.3, 7.5, 2.15, 4.39, 9.1}
Un element al unui vector poate fi utilizat ca orice altă variabilă. Pentru a ne referi la un
element al vectorului folosim numele vectorului și indicele elementului între paranteze pătrate.
Exemplu:
➢ int vect[6]={21,22,23,24,25,26}
vect = 21 22 23 24 25 26
indice (i) 0 1 2 3 4 5
cum ne referim la element vect[0] vect[1] vect[2] vect[3] vect[4] vect[5]
Indice 1 2 3 4 5
Dorim să eliminăm din vector elementul maxim par=910 și se află pe poziția 4 (poz=4)
Indice 1 2 3 4
Algoritmul:
#include <iostream>
using namespace std;
int n,i,v[101],maximp=0,poz;
int main()
{cout<<"Dimensiunea vectorului:";
cin>>n;
for(i=1;i<=n;i++)
{cin>>v[i];
if(v[i]%2==0 && v[i]>maximp) {maximp=v[i];
poz=i;} }
for(i=poz+1;i<=n;i++)
v[i-1]=v[i];
n--;
for(i=1;i<=n;i++) cout<<v[i]<<" "; return 0;}
2. Se dă de la tastatură un vector cu n componente numere naturale nenule (1<=n<=100) și un număr
natural p. Să se scrie un program care elimină din vector elementele care sunt prime cu p.
Cum procedăm?
• Citim elementele vectorului și variabila p
• Parcurgem vectorul și analizăm dacă elementul de pe poziția curentă este prim cu p
• Dacă elementul de pe poziția curentă este prim cu p ștergem acest element folosind algoritmul de
la problema 1.
3
Observație:
Trebuie să fim atenți la indici pentru că în momentul în care în vector avem elemente aflate pe poziții
consecutive care îndeplinesc condiția este posibil să nu-l analizăm pe cel de-al doilea (deci valoarea
indicelui i crește doar dacă nu eliminăm element din vector)
Exemplu: pentru n=6, p=20 și vectorul v=(122, 13, 273, 910, 456, 121, 60) se va afișa: 122, 910,
456,60
Indice 1 2 3 4 5 6 7
p 20 20
Nu sunt Sunt prime
prime între între ele și
ele și se se elimină
trece la elementul
următorul
element
Se obține vectorul și trebuie analizat dacă elementul care acum este pe poziția 2 este prim cu p:
Indice 1 2 3 4 5 6
p 20 20
Nu sunt Sunt
prime între prime
ele și se între ele și
trece la se elimină
următorul elementul
element
Se obține vectorul și trebuie analizat dacă elementul care acum este pe poziția 2 este prim cu p:
Indice 1 2 3 4 5
p 20 20 20 20
Nu sunt Nu sunt Nu sunt Sunt
prime între prime prime prime
ele și se între ele și între ele și între ele și
trece la se trece la se trece la se elimină
următorul următorul următorul elementul
element element element
Se obține vectorul și trebuie analizat dacă elementul care acum este pe poziția 4 este prim cu p:
Elemente vector 122 910 456 60
Indice 1 2 3 4
p 20 20 20 20
Nu sunt prime Nu sunt prime Nu sunt prime Nu sunt prime
între ele și se între ele și se între ele și se între ele și se
trece la trece la trece la trece la 4
următorul următorul următorul următorul
element element element element
Algoritmul:
#include <iostream>
using namespace std;
int n,i,v[101],x,y,p,j,poz;
int main()
{cout<<"Dimensiunea vectorului:";
cin>>n;
cout<<"Numarul p:";
cin>>p;
for(i=1;i<=n;i++)
cin>>v[i];
i=1;
while(i<=n)
{x=v[i];
y=p;
while (x!=y)
if (x>y) x=x-y;
else y=y-x;
if (x!=1) i++;
else {poz=i;
for(j=poz+1;j<=n;j++)
v[j-1]=v[j];
n--;}}
for(i=1;i<=n;i++) cout<<v[i]<<" ";
return 0;}
Indice 1 2 3 4 5 6
Mutăm toate elementele începând cu 456 (element aflat pe poziția 6) cu o poziție la dreapta, deci
dimensiunea vectorului crește cu 1, apoi pe poziția 6 inserăm valoarea 20.
Indice 1 2 3 4 5 6 7
#include <iostream>
using namespace std;
int n,i,v[101],p,j;
int main()
{
cout<<"Dimensiunea vectorului:";
cin>>n;
cout<<"Numarul p:";
cin>>p;
for(i=1;i<=n;i++)
cin>>v[i];
i=1;
while(i<n)
{if (v[i]%2!=0 || v[i+1]%2!=0) i++;
else {
for(j=n;j>=i+1;j--)
v[j+1]=v[j];
v[i+1]=p;
n++;
i=i+2;}}
for(i=1;i<=n;i++) cout<<v[i]<<" ";
return 0;}
• Căutarea unei valori într-un vector – presupune căutarea unei valori între elementele unui vector.
Aceasta se poate realiza în două moduri:
➢ Căutarea secvențială – care presupune să parcurgem vectorul de la un capăt la celălalt și
să comparăm valoarea căutată cu fiecare element din vector. Pentru aceasta vom folosi o variabilă gasit
de tip adevărat sau fals. Presupunem inițial că valoarea căutată nu este în vector (deci gasit=0).
Parcurgem vectorul, iar dacă valoarea căutată este egală cu un element din vector atunci variabila
gasit=1 și putem opri căutarea. Dacă nu oprim căutarea atunci pentru un vector cu n elemente se fac n
comparări.
Algoritmul:
#include <iostream>
using namespace std;
int v[100],n,i,gasit,x; 6
int main()
{ cin>>n>>x;
for(i=1;i<=n;i++)
cin>>v[i];
for(i=1;i<=n && gasit==0;i++)
if(v[i]==x) gasit=1;
if(gasit==1)
cout << "Numarul se afla in vector";
else cout << "Numarul nu se afla in vector";
return 0;}
➢ Căutarea binară – se poate face numai într-un vector ordonat și presupune să comparăm
elementul de căutat cu elementul de pe poziția din mijloc a vectorului. Dacă elementul căutat este
egal cu elementul din mijloc căutarea s-a terminat, altfel dacă numărul căutat este mai mic decât
elementul din mijloc începem căutarea între componentele vectorului din stânga, iar dacă numărul
căutat este mai mare decât numărul din mijloc începem căutarea între componentele vectorului din
dreapta. Procedeul de împărțire a vectorului în subvectori până când nu mai avem elemente.
Exemplu:
Se consideră următorul vector ordonat crescător de dimensiune 10:
v= 12 14 16 27 45 56 78 89 102 234
i 1 2 3 4 5 6 7 8 9 10
v= 12 14 16 27 45 56 78 89 102 234
i 1 2 3 4 5 6 7 8 9 10
1 10 (1+10)/2=5
x=27 < v[5]=45, deci vom continua căutarea în subvectorul din stânga,
adică dr=mij-1
v= 12 14 16 27 45 56 78 89 102 234
i 1 2 3 4 5 6 7 8 9 10
1 5 (1+5)/2=3
x=27 > v[3]=16, deci vom continua căutarea în subvectorul din dreapta,
adică st=mij+1
Algoritmul:
#include<iostream>
using namespace std; 7
int i,n,x,st,dr,mij,gasit,v[50];
int main()
{cin>>n>>x;
for(i=1;i<=n;i++) cin>>v[i];
st=1;
dr=n;
gasit=0;
while (st<=dr && gasit!=1)
{ mij=(st+dr)/2;
if (v[mij]==x) gasit=1;
else if (x<v[mij]) dr=mij-1;
else st=mij+1;}
if (gasit==1) cout<<"Numarul se afla in vector"<<endl;
else cout<<"Numarul nu se afla in vector"<<endl;
return 0;}
Vector de frecvență. Vector caracteristic
Vectorul de frecvenţe reţine numărul de apariţii al fiecărei valori citite într-un vector.
Folosirea vectorului de frecvenţe permite scrierea unor algoritmi eficienţi în cazul în care datele de
intrare au valori dintr-un domeniu cunoscut care poate fi prelucrat rapid.
Folosirea unui vector de frecvență sau marcare este eficientă numai în cazul în care valorile care
interesează sunt întregi și numărul valorilor distincte posibile este cel mult 1.000.000 pentru un timp maxim
de 1 sec/test.
De exemplu acest vector poate fi folosit pentru sortarea rapidă a datelor, în timp liniar.
Tot cu ajutorul acestui vector pot fi implementate operaţiile de bază cu mulţimi:
- Căutarea unui element
- Intersecţia a două (sau mai multe) mulţimi
- Reuniunea a două (sau mai multe) mulţimi
Într-un vector caracteristic, pe poziția i este stocată o informație despre numărul i. De cele mai
multe ori, pe poziția i se va găsi o valoare booleană (true sau false) care indică, spre exemplu, dacă i se
află într-o listă dată de întregi sau nu.
Vector caracteristic
- are doar valori de 0 și 1
- pe poziția i are valoarea 0 dacă i nu se
regăsește în listă sau valoarea 1 dacă i
se regăsește în listă.
Vector de frecvență
- pe poziția i rețin numărul de
apariții ale lui i (frecvența lui )
Exemplu:
Se dau două șiruri de cifre zecimale. Să se determine cifrele comune, în ordine crescătoare.
În funcție de numărul de cifre din cele două șiruri, putem realiza diverse soluții:
❑ căutăm fiecare termen din primul șir în al doilea șir. Șirul cu valorile comune va trebui sortat.
❑ dacă șirurile sunt sortate (sau le sortăm) procedăm ca mai sus, dar căutăm binar. Șirul cu valorile
comune este de la început sortat.
❑ dacă șirurile sunt sortate (sau le sortăm) putem folosi interclasarea pentru a afla elementele
comune.
Nicio soluție dintre cele de mai sus nu ține cont de o proprietate a valorilor din șir – că sunt cifre,
adică între 0 și 9. Putem proceda astfel:
❑ pentru fiecare șir vom folosi un vector cu doar 10 elemente, indexate de la 0 la 9; fie acestea
v[10] și u[10];
❑ indicii elementelor din șir reprezintă cifrele – valorile posibile ale elementelor din șir;
❑ inițial elementele celor doi vectori sunt 0;
❑ pentru fiecare valoare x (care este cifră) care apare în primul șir vom marca în vectorul v
elementul corespunzător cu 1, v[x] = 1;
❑ similar, fiecare element y din al doilea șir va fi marcat în vectorul u cu 1, u[y] = 1;
❑ la final sunt comune cifrele c (de la 0 la 9) care sunt marcate cu 1 atât în vectorul v, cât și în
vectorul u.
Cei doi vectori v și u sunt vectori caracteristici. Elementele lor caracterizează cifrele dintre 0 și 9,
stabilind despre fiecare cifră dacă face sau nu parte din șirul corespunzător.
Observăm că nu trebuie memorate elementele celor două șiruri date. Ne interesează numai
valorile distincte care apar în fiecare șir, indiferent de ordinea în care apar.
Observații:
❑ vectorul caracteristic are dimensiune constantă – egală cu numărul de valori pe care le
caracterizează;
❑ elementele vectorului caracteristic sunt 0 sau 1 (echivalent cu Adevărat și Fals); valorile din
vectorul caracteristic NU sunt valorile date;
❑ valorile date se află printre indicii vectorului caracteristic, respectiv indicii corespunzători
elementelor egale cu 1;
Exemplu:
Să considerăm un șir de cifre zecimale. Să se determine cifra care apare de cele mai multe ori. Dacă
sunt mai multe cifre care apar de număr maxim de ori, să se determine cea mai mică.
De această dată nu putem folosi un vector caracteristic, dar putem folosi un vector de frecvență, adică
un vector cu același număr de elemente ca numărul posibil de valori distincte din șirul dat (adică 10), cu
semnificația: v[c] = numărul de apariții ale cifrei c în șirul dat.
După construirea acestui vector, valoarea maximă din el va reprezenta numărul maxim de apariții ale
unei cifre, iar indicii pentru care elementul corespunzător are valoare maximă reprezintă cifrele care apar
de număr maxim de ori.
Interclasarea a doi vectori
Considerăm două tablouri unidimensionale cu elemente numere întregi ordonate crescător. Se dorește
construirea unui alt tablou, care să conțină valorile din cele două tablouri, în ordine.
Fie două tablouri, x cu n, respectiv y cu m elemente, ordonate crescător.
Algoritm
1. Declarăm un vector v, care este inițial fără nici un element (k = 0), k reprezintă numărul de
elemente din vectorul v
2. Cât timp se află elemente în ambii vectori (i <= n și j <= m):
a. Compară elementul x[i] cu y[j]
b. Incrementăm k
c. Adaugăm în v, pe poziția k, elementul cel mai mic dintre x[i] și y[j]
d. Incrementăm indicele corespunzător vectorului din care am făcut adăugarea (incrementăm i dacă
elementul x[i] a fost mai mic, în caz contrar, incrementăm j)
3. Verificăm în care dintre cei doi vectori au mai rămas elemente.
a. Dacă i <= n atunci înseamnă că mai avem elemente în vectorul x[i], pe care le luam în ordine și
le adaugăm la finalul vectorului.
b. Daca j <= m atunci înseamnă că mai avem elemente în vectorul y[j], pe care le luam în ordine și
le adaugăm la finalul vectorului v.
4. Algoritmul se încheie, iar vectorul v conține elementele din x și din y ordonate crescător, vom
avea n+m elemente
#include <iostream>
using namespace std;
int main()
{ int X[100], Y[100], V[200], n, m, k = 0, i = 0, j = 0;
cout << "Introduceti numarul de elemente corespunzator vectorului X: "; cin >> n;
cout << "Introduceti elementele vectorului X: ";
for(int i = 0; i < n; i++) cin >> X[i];
cout << "Introduceti numarul de elemente corespunzator vectorului Y: "; cin >> m;
cout << "Introduceti elementele vectorului Y: ";
for(int i = 0; i < m; i++)
cin >> Y[i];
while(i < n && j < m)
{if(X[i] < Y[j])
{ V[k] = X[i]; 10
k++; i++; }
else
{ V[k] = Y[j];
k++; j++; } }
if(i <= n)
{for(int p = i; p < n; p++)
{ V[k] = X[p]; k++; } }
if(j <= m)
{ for(int p = j; p < m; p++)
{ V[k] = Y[p]; k++; } }
for(int p = 0; p < k; p++)
cout << V[p] << " ";
return 0;}
Ordonarea elementelor unui vector sau sortarea – presupune aranjarea elementelor unui vector
după un anumit criteriu (crescător, descrescător, alfabetic). Există mai multe metode de sortare bazate pe
algoritmi diferiți:
• Sortarea prin metoda bulelor – această metodă presupune parcurgerea vectorului și se compară
fiecare element cu cel care urmează după el. Dacă cele două elemente nu sunt în ordine se interschimbă
între ele. Vectorul se parcurge de mai multe ori până când nu mai are loc nicio interschimbare (vectorul
este sortat).
Pentru a ști când nu mai are loc nicio interschimbare folosim o variabilă logică care la fiecare nouă
parcurgere a vectorului are inițial valoarea TRUE (1- presupunem că vectorul este sortat) și care la fiecare
interschimbare va lua valoarea FALSE (0 – vectorul nu este sortat deoarece are loc o interschimbare). Când
vectorul este sortat această variabilă va avea valoarea TRUE (1) la sfârșitul algoritmului.
Se consideră următorul vector de dimensiune 5:
v= 103 45 27 215 92
i 1 2 3 4 5
Pentru sortarea vectorului prin metoda bulelor se parcurg următorii pași:
Parcurgerea 1:
Variabila ok=1
➢ i=1 și comparăm elementele v[1] cu v[2] (v[1]=103>v[2]=45 adevărat, deci cele două valori se
interschimbă între ele) și variabila ok=0
v = 103 45 27 215 92 v = 45 103 27 215 92
i 1 2 3 4 5 i 1 2 3 4 5
➢ i=2 și comparăm elementele v[2] cu v[3] (v[2]=103>v[3]=27 adevărat, deci cele două valori se
interschimbă între ele) și variabila ok=0
v = 45 103 27 215 92 v = 45 27 103 215 92
i 1 2 3 4 5 i 1 2 3 4 5
➢ i=3 și comparăm elementele v[3] cu v[4] (v[3]=103>v[4]=215 fals, deci se trece la următorul i
v = 45 27 103 215 92
i 1 2 3 4 5
➢ i=4 și comparăm elementele v[4] cu v[5] (v[4]=215>v[5]=92 adevărat, deci cele două valori se
interschimbă între ele) și variabila ok=0
v = 45 27 103 215 92 v = 45 27 103 92 215 11
i 1 2 3 4 5 i 1 2 3 4 5
➢ i=2 și comparăm elementele v[2] cu v[3] (v[2]=45>v[3]=103 fals, deci se trece la următorul i
v = 27 45 103 92 215
i 1 2 3 4 5
➢ i=3 și comparăm elementele v[3] cu v[4] (v[3]=103>v[4]=92 adevărat, deci cele două valori se
interschimbă între ele) și variabila ok=0
v = 27 45 103 92 215 v = 27 45 92 103 215
i 1 2 3 4 5 i 1 2 3 4 5
➢ i=4 și comparăm elementele v[4] cu v[5] (v[4]=103>v[5]=215 fals, deci se trece la următorul i
v = 27 45 92 103 215
i 1 2 3 4 5
• Sortarea prin selecție directă - această metodă constă în a compara primul element (v[1]) pe rând
cu toate elementele de după el şi dacă ordinea de sortare nu este respectată, cele două elemente se
interschimbă. După efectuarea tuturor comparaţiilor, în prima poziţie ajunge cel mai mic element din vector
(în cazul ordonării crescătoare). Se compară apoi al doilea element cu toate elementele de după el etc. La
ultimul pas se compară numai ultimele două elemente.
Se consideră următorul vector de dimensiune 5:
v= 103 45 27 215 92
i 1 2 3 4 5
for (i=1;i<=n-1;i++){
minim=v[i];
k=i;
for (j=i+1;j<=n;j++)
if (v[j]<minim){
minim=v[j];
13
k=j;
}
aux=v[k];
v[k]=v[i];
v[i]=aux;
}
for (i=1;i<=n;i++) 14
cout<<v[i]<<" ";
return 0;}
• Sortarea prin numărare – metoda constă în construirea unui nou vector auxiliar C care are aceiași
dimensiune cu vectorul A și în care se vor memora elementele din A, apoi un vector Bcare inițial are
valoarea 0 și în care numărăm pentru fiecare element din A câte elemente mai mici ca el există în vector.
La finalul algoritmului se vor rescrie în ordine crescătoare elementele vectorului A pe baza valorilor
memorate în B și C.
Se consideră următorul vector de dimensiune 5:
A= 103 45 27 215 92
i 1 2 3 4 5
C= 103 45 27 215 92 B= 0 0 0 0 0
i 1 2 3 4 5 i 1 2 3 4 5
Determinăm elementele vectorului B astfel: B[i]= câte elemente mai mici decat A[i] sunt în
vectorul A.
Pe poziția 1 memorăm valoarea 3 deoarece în vectorul A avem 3 element mai mici decât v[1]=103
(avem 45, 27, 92 mai mici decât 103)
A= 103 45 27 215 92 B= 3 0 0 0 0
i 1 2 3 4 5 i 1 2 3 4 5
Pe poziția 2 memorăm valoarea 1 deoarece în vectorul A avem 1 element mai mic decât v[2]=45
(avem 27 mai mic decât 45)
A= 103 45 27 215 92 B= 3 1 0 0 0
i 1 2 3 4 5 i 1 2 3 4 5
Pe poziția 3 memorăm valoarea 0 deoarece în vectorul A avem 0 elemente mai mici decât v[3]=27
A= 103 45 27 215 92 B= 3 1 0 0 0
i 1 2 3 4 5 i 1 2 3 4 5
Pe poziția 4 memorăm valoarea 4 deoarece în vectorul A avem 4 element mai mici decât v[4]=215
(avem 103, 45, 27, 92 mai mici decât 215)
A= 103 45 27 215 92 B= 3 1 0 4 0
i 1 2 3 4 5 i 1 2 3 4 5
Pe poziția 5 memorăm valoarea 2 deoarece în vectorul A avem 2 element mai mici decât v[5]=92
(avem 45, 27 mai mici decât 92)
A= 103 45 27 215 92 B= 3 1 0 4 2
i 1 2 3 4 5 i 1 2 3 4 5
A= 27 45 92 103 215
i 1 2 3 4 5
Algoritmul:
#include <iostream>
using namespace std;
int n, A[100], B[100], C[100], i, j;
int main ()
{
cout<<"Dimensiunea vectorului: ";
cin>>n;
for (i=1;i<=n;i++) cin>>A[i];
for (i=1;i<=n;i++) C[i]=A[i];
for (i=1;i<n;i++)
for (j=i+1;j<=n;j++)
if (A[i]<A[j])
B[j]++;
else B[i]++;
for (i=1;i<=n;i++)
A[B[i]+1]=C[i];
for (i=1;i<=n;i++)
cout<<A[i]<<" ";
return 0;}
• Sortarea prin inserție – metoda constă în inserarea unui anumit element în șirul deja sortat al
predecesorilor săi. La fiecare pas un element este extras din vectorul iniţial şi este introdus în vectorul de
elemente sortate. Elementul este inserat în poziţia corectă în vectorul sortat, astfel încât vectorul să rămână
sortat în continuare.
Elementul aflat pe poziţia v[2] se compară cu v[1] şi încercăm să găsim poziţia în care ar trebui să
se introducă. Dacă v[2] < v[1] atunci v[2] trebuie să fie înainte, deci îl mutăm pe v[1] pe poziţia următoare.
La un pas j avem vectorul sortat v[1],...,v[j-1] şi încercăm să-l inserăm pe v[j] astfel încât să păstrăm
vectorul ordonat între 1 şi j-1.
Pentru aceasta, se compară succesiv v[j] cu elementele v[j-1], v[j-2], ..., v[1] (în această ordine),
mutând elementul de la poziţia curentă cu o poziţie la dreapta atunci când v[i]>v[j].
Când v[i]<=v[j] procesul de inserţie se opreşte, poziţia la care se realizează inserarea fiind i+1.
Se consideră următorul vector de dimensiune 5:
A= 103 45 27 215 92
i 1 2 3 4 5
Se păstrează primul element 103 considerandu-se un subșir deja sortat. Apoi se trece la 45 și îi
căutăm locul în subșir. Se observă că 45 este mai mic decât 103. Îl inserăm pe 45 înaintea lui 103 (mutăm
toate elementele aflate după poziția pe care vrem să inserăm cu o poziție la dreapta).
A= 103 45 27 215 92
i 1 2 3 4 5
Se trece la 27 și îi căutăm locul în subșir. Se observă că 45 este mai mic decât 27. Îl inserăm pe 27
înaintea lui 45 (mutăm toate elementele aflate după poziția pe care vrem să inserăm cu o poziție la dreapta).
Se trece la 215 și îi căutăm locul în subșir. Se observă că 215 nu este mai mic decât elementele sortate
până acum, deci nu se mută.
A= 27 45 103 215 92
i 1 2 3 4 5
Se trece la 92 și îi căutăm locul în subșir. Se observă că 92 este mai mic decât 103 și mai mare decât
45. Îl inserăm pe 92 înaintea lui 103 (mutăm toate elementele aflate după poziția pe care vrem să inserăm
cu o poziție la dreapta).
A= 27 45 103 215
i 1 2 3 4 5
A= 27 45 92 103 215
i 1 2 3 4 5
Tablouri unidimensionale
Algoritmul:
#include <iostream>
using namespace std;
int n, v[100], i, j, k, x;
int main ()
{
cout<<"Dimensiunea vectorului: ";
cin>>n;
for (i=1;i<=n;i++) cin>>v[i];
for(i=1;i<=n;i++)
{k=1;
x=v[i];
while(x>v[k])
k=k+1;
for(j=i-1;j>=k;j--)
v[j+1]=v[j];
v[k]=x;
}
for (i=1;i<=n;i++)
cout<<v[i]<<" ";
return 0;}
17