Informatică, întrebare adresată de lupudaniel351, 9 ani în urmă

se da un vector cu n elemente intregi fara a folosi un vector auxiliar sa se mute la sfarsitul vectorului elementele sale nule pastrand ordinea celor lalte elemente

Răspunsuri la întrebare

Răspuns de alexandru1997t
0
Ma gandesc la 2 variante.

 Prima este sa folosesti functia swap:

Ce face swap mai exact?Interschimba 2 valori fara alta variabila auxiliara.

In loc de:
aux=b;
b=a;
a=aux;

vei avea swap(a,b)

Bineinteles, ca aplici functia swap pentru vectorul tau:

2)Parcurgi vectorul si cand gasesti un element egal cu 0, il numeri(cu o variabila nr si stergi valoarea, mutand toate elementele vectorului cu o pozitie la stanga.La final, parcurgi vectorul de la ultima pozitie pana la ultima pozitie+nr si adaugi "0".

Spre exemplu, daca ai vectorul:
 7 2 0 5 0 4 3 1 0
1)parcugem vectorul, numaram "0" si le stergem
o sa avem
7 2 5 4 3 1
si nr=3.( nr de 0 eliminate)
2)Parcurgem vectorul de inca 3 ori si adaugam la finalul vectorului 3 zerouri(sau cate am eliminat anterior)

Personal recomand a doua varianta.Cea cu swap s-ar putea sa ridice probleme intr-un vector. 
Alte întrebări interesante