Sunteți pe pagina 1din 4

1)SUMA ELEMENTELOR DINTR-UN VECTOR::

#include<iostream>
using namespace std; }
int v[100],i,n;
int suma(int p, int q) int main()
{ int mij; {
if(p==q) cout<<"n="; cin>>n;
return v[p]; for(i=1;i<=n;i++)
else cin>>v[i];
{ mij=(p+q)/2; cout<<"suma="<<suma(1,n);
return suma(p,mij)+suma(mij+1,q);} }

2.//SUMA ELEMENTELOR PARE din vector


int suma(int p, int q)
{
int mij;
if(p==q)
if(v[p]%2==0)
return v[p];
else
return 0;
else
{ mij=(p+q)/2;
return suma(p,mij)+suma(mij+1,q);}

3/produsul elementelor din vector


int produs(int p, int q)
{
int mij;
if(p==q)
return v[p];
else
{ mij=(p+q)/2;
return produs(p,mij)*produs(mij+1,q);}

4/produsul elementelor pare din vector


int produs(int p, int q)
{
int mij;
if(p==q)
if(v[p]%2==0)
return v[p];
else
return 1;
else
{ mij=(p+q)/2;
return produs(p,mij)*produs(mij+1,q);}

}
5/numararea elementelor pare

int pare ( int p, int q)


{
int mij,nr1,nr2;
if(p==q)
if(v[p]%2==0)
return 1;
else
return 0;
else
{ mij=(p+q)/2;
nr1=pare(p, mij);
nr2=pare(mij+1,q);
return nr1+nr2;
}
}

6. element maxim din vector:

int maxim(int p, int q)


{ int mij,max1,max2;
if(p==q)
return v[p];
else
{
mij=(p+q)/2;
max1=maxim(p,mij);
max2=maxim(mij+1,q);
if(max1>max2)
return max1;
else
return max2;
}

II. Cautare normala : Ai un vector neordonat si vrei sa cauti un element x . O(n)


#include<iostream>
using namespace std;

int i,n,v[100],x;

int cauta(int p, int q, int x)


{ int mij;
if(p==q)
if(v[p]==x)
return 1;
else
return 0;
else
{
mij=(p+q)/2;
cauta(p,mij,x);
cauta(mij+1,q,x);
}
}
int main()
{
cout<<"n="; cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
cout<<"pe cine caut="; cin>>x;
if (cauta(1,n,x)==0)
cout<<"nu exista";
else
cout<<"exista ";
}

6/CAUTARE BINARA!!!!! (vectorul este ordonat!!!)

#include<iostream>
using namespace std;
int v[100],i,n,x;

int cauta(int p, int q, int x)


{
int mij;
if(p>q)
return 0;
mij = (p+q)/2;
if(v[mij]==x)
return 1;
if (x <v[mij])
return cauta(p,mij-1, x);
else
return cauta(mij+1, q, x);

}
int main()
{
cout<<"n="; cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];

cout<<"pe cine cauti="; cin>>x;


if(cauta(1,n,x)==1)
cout<<"este";
else
cout<<"nu";
}

Explicatie cautare binara:


Cautarea binara se aplica numai pe vectori ordonati ( crescator sau descrescator) si consta
in- se imparte vectorul in doua jumatati prin determinarea pozitiei de mijloc( mij=(1+n)div2
- daca elementul cautat se gaseste chiar pe pozitia de mijloc algoritmul se incheie
In caz contrar :
--- daca valoarea cautata < decat elementul de pe pozitia de mijloc cautarea se va relua
in prima jumatate a vectorului
--- daca valoarea cautata > decat elementul de pe pozitia de mijloc cautarea se va relua
in ultima jumatate a vectorului
Acest algoritm reduce complexitatea operatiei de cautare a unei valori v intrun vector
ordonat are la baza metoda divide et impera , prin care domeniul de valori in se se
cauta solutia problemei este redus pas cu pas pana la gasirea solutiei. Complexitatea
timp a algoritmului este O(log 2n)

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