Documente Academic
Documente Profesional
Documente Cultură
./ ./
Elementelevectorului sursa a[i] se copiaza n vectoruldestinatie prin inseraren pozitia corespunzatoare,astfel nct n vectoruldestinatiesa fie respectatarelatia de ordine. Se folosesc urmatoarele variabile de memorie:
./
./
./
./
primul element din vectorul b (b[O]) este initializat cu valoarea primului element din vectorul a (a[O]). variabila i pentru parcurgerea vectorului sursa n vederea preluarii elementului a[i] pentru a fi inserat n vectorul b: initial (la selectarea primului element - a[1]) ea are valoarea 1, la fiecare noua selectare a unui element a[i] se incrementeaza cu 1, iar operatia de parcurgere se termina atunci cnd variabila i are valoarea n-1 (a fost selectat ultimul element - a[n-1]); variabila j la parcurgerea vectorului destinatie b de la stnga la dreapta, pentru a gasi pozitia n care trebuie inserat elementul a[i] conform relatiei de ordine; la fiecare operatie de cautare a pozitiei n care trebuie inserat noul element a[i], ea va fi initializata cu indicele primului element din vectorul destinatie (O),si se incrementeaza cu 1 pna se gaseste pozitia de inserare sau pna se ajunge la sfrsitul vectorului b (elementul cu indicele i-1); variabila k la parcurgerea vectorului destinatie b de la dreapta la stnga, pentru a deplasa elementele cu o pozitie spre dreapta n vederea eliberarii pozitiei n care se va insera a[i]: la fiecare noua operatie de inserare a unui element a[i], ea va fi initializata cu indicele ultimului element din vectorul destinatie (i), si se decrementeaza cu 1 pentru fiecare deplasare a unui element, pna cnd este deplasat si elementul din pozitia de inserarej; Se copiaza elementul a[O]n vectorul b pe prima pozitie: b[O]=a[O]. Se initializeaza variabila i cu 1 pentru a ncepe procesul de copiere din vectorul a n vectorul b. Se initializeaza variabila j cu valoarea Opentru a ncepe procesul de cautare a pozitiei n care va fi inserat elementul a[i]. Se compara elementul a[i] cu elementul bO].Daca a[i]>bO],nseamna ca nu s-a gasit nca pozitia si se trece la pasul urmator; altfel, s-a gasit pozitia si trece la Pas 7. Se incrementeaza valoarea lui j cu 1: j=j+1 pentru a continua procesul de cautare a pozitiei de inserare. Se compara j cu numarul de elemente din vectorul destinatie (i-1). Daca j<=i-1 se revine la pasul Pas 4; altfel, s-a gasit pozitia si trece la Pas 7. Se initializeaza variabila k cu valoarea i pentru a ncepe procesul de deplasare a elementelor din vectorul b spre dreapta: k=i. Se deplaseaza un element spre dreapta: b[i]= b[i-11. Se decrementeaza valoarea lui k cu 1: ~ k-1. Se compara k cu ultima pozitie n care S0deplaseaza un element (pozitia imediat urmatoare pozitiei de inserarej). Cnd k>=j+1 se revine la Pas 8;
Pas11. Se insereaza elementul a[i] n vectorul b pozitiaj: bU]=a[i]. Pas12. Se incrementeaza valoarea lui i cu 1: i=i+1, pentru a continua procesul
Pas 13. Pas 14. de copiere a unui element din vectorul a n vectorul b. Se compara variabila i cu indicele ultimului element din vectorul sursa. Daca i<n-1 se revine la Pas 3; altfel, se trece la pasul urmator. Vectorul este sortat crescator.
MI:IIII]-
-=c:r:J
,"
initializare
~
1 "1
j=O 4
k=1 4..4 k=O;'/\,' 4 i=21 4 ,1 3 ~ . j=O 3 4 k=2 3 4 k=1 3 3 k=O ,:2~~ 3 j=O k=3 k=2 k=1 k=O i=4 2 2 2 2 3 3 3 - 2: 2
~
;-'
Se insereaza elementul a[1] =3 3>4: Nu ~ ncepe deplasarea 1>=1: Da ~ deplasare 0>=1: Nu ~ inserare Se insereaza elementul a[2] =2 2>3 Nu ~ ncepe deplasarea 2>=1: Da ~ deplasare 1>=1: Da ~ deplasare 0>=1: Nu ~ inserare
4 4 4
Se insereaza elementul a[3] =1 4 1>2 Nu ~ ncepe deplasarea 4!: 4' 3>=1: Da ~ deplasare 4 2>=1: Da ~ deplasare 3 4 1>=1: Da ~ deplasare 3 4 0>=1: Nu ~ inserare
i=n ~ terminare
-- --- - ---- ,
==
{cout"a[nJ+l::n]
.
n;
cina
[i]
(i=l;i<n ;i++) fj==O'; wh~l.e(j<=i -:t;~-& a [il>b[ j'r}. j'f+; fot (k,;=J:; k>=5+1; k-";Jbfk);=b ['k-J.l; - b[j ] =;<1(i];
}' .(j.-=Oii-<niJ.++..1-cout<512.fLl'<d'" "'1;,
""or
- - ----