Sunteți pe pagina 1din 7

6.

Scrieţi pseudocodul pentru diverse metode de sortare ca, Heap (heap sort), Bulelor (buble sort),
Rapidă (quick sort), Radix (radacina), etc.
HEAP SORT
subalgoritm combinare(vf, n)
baza, valoare, gata întreg;
baza←2*vf; valoare←x[vf];gata←0;
cât timp baza≤n şi gata=0 execută
dacă baza < n si x[baza] > x[baza+1] atunci baza←baza+1
sfârşit dacă;
dacă valoare>x[baza] atunci
x[vf]←x[baza]
vf←baza
baza←baza*2
altfel
gata←1
sfârşit dacă;
sfârşit cât timp;
x[vf]←valoare;
sfârşit combinare;
subalgoritm heap()
i intreg;
pentru i←n/2,1,-1 execută
combinare(i,n);
sfârşit pentru;
sfârşit heap;
subalgoritm heapsort()
aux,i întreg;
heap()
pentru i←n,2,-1 execută
aux←v[1];
v[1] ←v[i];
v[i] ←aux;
combinare(1,i-1);
sfârşit pentru;
sfârşit heapsort;

BUBLE SORT
Subalgoritm Metoda_bulelor(v,n)
repetă
ok <— adevărat
pentru i=l,n-l execută
dacă v[i]>v[i+l]atunci
ok fals
aux v[i]
v[i] v[i+1]
v[i+l] aux
sfârşit dacă
sfârşit pentru
până când ok
sfârşit subalgoritm
7. Considerând două numere întregi determinaţi cmmdc folosind algorimul lui Euclid.
#include <iostream>
int main()
{
int n , m;
std :: cin >> n >> m;
while(m != 0)
{
int r = n % m;
n = m;
m = r;
}
std :: cout << n << std :: endl;
return 0;
}
8. Descrieţi algoritmii pentru descompunerea unui număr în factori primi, determinarea tuturor
numerelor prime până la un n citit etc.
Descompunerea în factori primi a numărului natural n
#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;
int d = 2, // d va fi, pe rand, fiecare factor prim din descompunere
p; // p va fi puterea lui d in descompunere
// il im partim pe n la d in mod repetat, pana cand devine 1
while(n > 1)
{
// numaram de cate ori se imparte n la d. Aceasta va fi puterea lui d in descompunere
p = 0;
while(n % d == 0)
{
++p;
n /= d;
}
// daca s-a facut cel putin o impartire, afisam factorul si puterea
if(p)
cout << d << " " << p << endl;
++ d;
// daca d * d il depaseste pe n si n nu este 1, decidem ca n este prim,
// si este factor in descompunerea valorii initiale a lui n
if(n>1 && d * d > n){
d = n; // trecem direct la n, urmatorul factor din descompunere
}
}
return 0;
}
Determinarea tuturor numerelor prime până la un n citit
nt C[100], NC, I, J;
//2 este primul numar prim
C[1]=2; NC=1; cin >>N;
for(I=3; NC<N; I=I+2) //merg doar pe numere impare
{//caut divizori pentru I
for(J=1;J<=NC && I % C[J]!=0 ;J++);
if(J>NC) //nu s-a gasit divizor=> I este prim si il adaug la sfarsitul vectorului
{NC++; C[NC]=I;}
}
//ies cand NC==N
//afisez primele N numere prime
for(I=1;I<=N;I++) cout<<C[I]<<” “;

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