METODE DE SORTARE A VECTORILOR Sortarea consta in



![ALGORITM: int i, j, n, k, a[50], b[50]; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=1; ALGORITM: int i, j, n, k, a[50], b[50]; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=1;](https://slidetodoc.com/presentation_image_h/ab4bd136a40d288e1e6c48f04bf65a07/image-4.jpg)
![METODA NUMARARII Elementele vectorului sursă a[i] se copiaza în vectorul destinaţie prin inserarea în METODA NUMARARII Elementele vectorului sursă a[i] se copiaza în vectorul destinaţie prin inserarea în](https://slidetodoc.com/presentation_image_h/ab4bd136a40d288e1e6c48f04bf65a07/image-5.jpg)
![ALGORITM int i, j, n. a[50], b[50, k[50]={0}; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=0; ALGORITM int i, j, n. a[50], b[50, k[50]={0}; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=0;](https://slidetodoc.com/presentation_image_h/ab4bd136a40d288e1e6c48f04bf65a07/image-6.jpg)

![ALGORITM int i, j, n, aux, a[50]; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=0; i<n-1; ALGORITM int i, j, n, aux, a[50]; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=0; i<n-1;](https://slidetodoc.com/presentation_image_h/ab4bd136a40d288e1e6c48f04bf65a07/image-8.jpg)

![Algoritm int i, n, aux, a[50], ok=0; cin>>n; for(i=0; i<n; i++) cin>>a[i]; while(ok==0) { Algoritm int i, n, aux, a[50], ok=0; cin>>n; for(i=0; i<n; i++) cin>>a[i]; while(ok==0) {](https://slidetodoc.com/presentation_image_h/ab4bd136a40d288e1e6c48f04bf65a07/image-10.jpg)

![ALGORITM int i, j, n, aux, a[50]; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=1; i<n; ALGORITM int i, j, n, aux, a[50]; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=1; i<n;](https://slidetodoc.com/presentation_image_h/ab4bd136a40d288e1e6c48f04bf65a07/image-12.jpg)

![ALGORITM int i, j, n, aux, st, dr, mijl, a[50]; cin>>n; for(i=0; i<n; i++) ALGORITM int i, j, n, aux, st, dr, mijl, a[50]; cin>>n; for(i=0; i<n; i++)](https://slidetodoc.com/presentation_image_h/ab4bd136a40d288e1e6c48f04bf65a07/image-14.jpg)

![Algoritm int v[100], i, n, min, k, aux, j'; cin>>n; for(i=0; i<n; i++) cin>>v[i]; Algoritm int v[100], i, n, min, k, aux, j'; cin>>n; for(i=0; i<n; i++) cin>>v[i];](https://slidetodoc.com/presentation_image_h/ab4bd136a40d288e1e6c48f04bf65a07/image-16.jpg)

- Slides: 17

METODE DE SORTARE A VECTORILOR

Sortarea consta in rearanjarea elementelor vectorului astfel incat intre valorile lor sa existe o relatie de ordine (crescatoare sau descrescatoare). Aranjarea elementelor se poate face: 1. Intr-un alt vector folosind: • Metoda inserarii • Metoda numararii 2. In acelasi vector folosind: • Metoda selectiei directe • Metoda bulelor • Metoda inserarii rapide • Metoda inserarii directe

METODA INSERARII Sortarea prin inserţie se bazează pe aceleaşi principii ca şi cele aplicate de majoritatea jucătorilor de cărţi, adică după ridicarea unei cărţi de pe masă, aceasta se aşează în pachetul din mână la locul potrivit. Cu alte cuvinte, considerăm că avem vectorul sortat a, iar la ivirea unui nou element care se va adăuga vectorului, el va fi pus pe locul potrivit printr-o inserţie în interiorul vectorului.
![ALGORITM int i j n k a50 b50 cinn fori0 in i cinai fori1 ALGORITM: int i, j, n, k, a[50], b[50]; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=1;](https://slidetodoc.com/presentation_image_h/ab4bd136a40d288e1e6c48f04bf65a07/image-4.jpg)
ALGORITM: int i, j, n, k, a[50], b[50]; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=1; i<n; i++) { j=0; while(j<=i-1 && a[i]>b[j]) j++; for(k=i; k>=j+1; k--) b[k]=b[k-1]; b[j]=a[i]; } for(i=0; i<n; i++) cout<<b[i]<<" "; C + +
![METODA NUMARARII Elementele vectorului sursă ai se copiaza în vectorul destinaţie prin inserarea în METODA NUMARARII Elementele vectorului sursă a[i] se copiaza în vectorul destinaţie prin inserarea în](https://slidetodoc.com/presentation_image_h/ab4bd136a40d288e1e6c48f04bf65a07/image-5.jpg)
METODA NUMARARII Elementele vectorului sursă a[i] se copiaza în vectorul destinaţie prin inserarea în poziţia corespunzătoare, astfel încât, în vectorul destinaţie să fie respectată relaţia de ordine. Pentru a se cunoaşte poziţia în care se va insera fiecare element, se parcurge vectorul sursă şi se numără în vectorul k, pentru fiecare element a[i], câte elemente au valoarea mai mică decât a lui. Fiecare element al vectorului k este un contor pentru elementul a[i]. Valoarea contorului k[i] pentru elementul a[i] reprezintă câte elemente sunt mai mici decit el şi arată de fapt poziţia în care trebuie copiat în vectorul b.
![ALGORITM int i j n a50 b50 k500 cinn fori0 in i cinai fori0 ALGORITM int i, j, n. a[50], b[50, k[50]={0}; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=0;](https://slidetodoc.com/presentation_image_h/ab4bd136a40d288e1e6c48f04bf65a07/image-6.jpg)
ALGORITM int i, j, n. a[50], b[50, k[50]={0}; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) if(a[i]>a[j]) k[i]++; else k[j]++; for(i=0; i<n; i++) b[k[i]]=a[i]; for(i=0; i<n; i++) cout<<b[i]<<" ";

METODA SELECTIEI DIRECTE Considerăm un vector de elemente comparabile între ele şi dorim să le ordonăm crescător. Pentru aceasta comparăm primul element cu toate elementele care urmează după el. Dacă găsim un element mai mic decât primul atunci le interschimbăm pe cele două. Apoi continuăm cu al doilea element al şirului, pe care, de asemenea îl comparăm cu toate elementele care urmează după el şi în caz de inversiune interschimbăm cele două elemente. Apoi procedăm la fel cu al treilea element al şirului iar procesul continuă astfel pâna la penultimul element al şirului care va fi comparat cu ultimul element din şir.
![ALGORITM int i j n aux a50 cinn fori0 in i cinai fori0 in1 ALGORITM int i, j, n, aux, a[50]; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=0; i<n-1;](https://slidetodoc.com/presentation_image_h/ab4bd136a40d288e1e6c48f04bf65a07/image-8.jpg)
ALGORITM int i, j, n, aux, a[50]; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) if(a[j]<a[i]) { aux=a[i]; a[i]=a[j]; a[j]=aux; } for(i=0; i<n; i++) cout<<a[i]<<" ";

METODA BULELOR Prin aceasta metoda se parcurge vectorul si se compara fiecare element cu succesorul sau. Daca nu sunt in ordine cele doua elemente se interschimba intre ele. Vectorul se parcurge de mai multe ori, pana cand la o parcurgere completa nu se mai executa nici o interschimbare intre elemente (inseamna ca vectorul este sortat).
![Algoritm int i n aux a50 ok0 cinn fori0 in i cinai whileok0 Algoritm int i, n, aux, a[50], ok=0; cin>>n; for(i=0; i<n; i++) cin>>a[i]; while(ok==0) {](https://slidetodoc.com/presentation_image_h/ab4bd136a40d288e1e6c48f04bf65a07/image-10.jpg)
Algoritm int i, n, aux, a[50], ok=0; cin>>n; for(i=0; i<n; i++) cin>>a[i]; while(ok==0) { ok=1; for(i=0; i<n-1; i++) if(a[i]>a[i+1]) {aux=a[i]; a[i]=a[i+1]; a[i+1]=aux; ok=0; } } for(i=0; i<n; i++) cout<<a[i]<<" ";

METODA INSERARII DIRECTE Se consideră că primele i elemente al vectorului sunt deja sortate. Pentru elementul al (i+1)-lea, din tabloul iniţial, se va găsi poziţia în care trebuie inserat printre primele i elemente. Toate elementele tabloului de la această poziţie şi până la i vor fi deplasate cu o poziţie mai la dreapta iar poziţia eliberată va fi ocupată de elementul i+1.
![ALGORITM int i j n aux a50 cinn fori0 in i cinai fori1 in ALGORITM int i, j, n, aux, a[50]; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=1; i<n;](https://slidetodoc.com/presentation_image_h/ab4bd136a40d288e1e6c48f04bf65a07/image-12.jpg)
ALGORITM int i, j, n, aux, a[50]; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=1; i<n; i++; ) { aux=a[i]; j=i-1; while(j>0 && aux<a[j]) {a[j+1]=a[j]; j--; } if(aux>=a[j]) a[j+1]=aux; else {a[1]=a[0]; a[0]=aux; } } for(i=0; i<n; i++) cout<<a[i]<<" ";

METODA INSERARII RAPIDE Deoarece vectorul destinaţie este un vector ordonat crescător, căutarea poziţiei în care va fi inserat a[i] se poate face nu secvenţial (ca în cazul inserării directe) ci prin algoritmul de căutare binară. Subvectorul destinaţie este împărţit în doi subvectori, se examinează relaţia de ordine dintre elementul de la mijlocul subvectorului şi elementul a[j] şi se stabileşte dacă elementul a[i] va fi inserat în prima jumătate sau în a doua jumătate. Operaţia de divizare a subvectorului continuă până se găseşte poziţia în care urmează să fie inserat a[i].
![ALGORITM int i j n aux st dr mijl a50 cinn fori0 in i ALGORITM int i, j, n, aux, st, dr, mijl, a[50]; cin>>n; for(i=0; i<n; i++)](https://slidetodoc.com/presentation_image_h/ab4bd136a40d288e1e6c48f04bf65a07/image-14.jpg)
ALGORITM int i, j, n, aux, st, dr, mijl, a[50]; cin>>n; for(i=0; i<n; i++) cin>>a[i]; for(i=1; i<n; i++){aux=a[i]; st=0; dr=i-1; while(st<=dr) {mijl=(st+dr)/2; if(aux<a[mijl]) dr=mijl-1; else st=mijl+1; } j=i-1; while(j>=st) {s[j+1]=a[j]; j=j-1; } a[st]=aux; } for(i=0; i<n; i++) cout<<a[i]<<" ";

METODA MINIMULUI Se considera valoarea minima cea din pozitia I si se pastreaza valoarea intr-o variabila k. Vectorul este apoi parcurs de la elementul urmator pana la sfarsit si se cauta valoarea minima, care se pastreaza in variabila min si schimbam pozitia, apoi se interschimba cele doua valori, I si k.
![Algoritm int v100 i n min k aux j cinn fori0 in i cinvi Algoritm int v[100], i, n, min, k, aux, j'; cin>>n; for(i=0; i<n; i++) cin>>v[i];](https://slidetodoc.com/presentation_image_h/ab4bd136a40d288e1e6c48f04bf65a07/image-16.jpg)
Algoritm int v[100], i, n, min, k, aux, j'; cin>>n; for(i=0; i<n; i++) cin>>v[i]; for(i=0; i<n-1; i++) {min=v[i]; k=i; for(j=i+1; j<=n; j++) if(v[j]<min) {min=v[j]; k=j; } aux=v[i]; v[i]=v[k]; v[k]=aux; } for(i=0; i<n; i++) cout<<v[i]<<" ";

Proiect realizat de Toi Oana Clasa a X-a B
Metode de sortare
Sortarea unui vector c++
Sortare vectori
Sortare c++
Sa se determine coordonatele vectorilor ab+cd
Compune vectorii din figura
Sortarea prin interschimbare
Metoda selectiei directe
Divide et empera
Sortare topologica
Cuantas permutaciones se pueden formar con las letras a e i
Consta mobile
Functia de reproducere consta in
Ejemplo de conjuntos por extensión
La estructura de un texto expositivo consta de tres partes
Partes de un salmo
Una oración compuesta
El texto expositivo