0% found this document useful (0 votes)
6 views

Gen

Uploaded by

xxejeyexx
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

Gen

Uploaded by

xxejeyexx
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

int comp_int(const void *a,const void *b){

int p1,p2;
p1=*(int*)a;
p2=*(int*)b;
return p1-p2;}

int interschimb_int(const void * adra, const void * adrb){


int tmp = *((int*)adra);
*(int*)adra = *((int*)adrb);
*((int*)adrb) = tmp;

}
typedef int (*TIP_PF)(const void*, const void*);

void DirectSort(void* baza,size_t nrel,size_t dimElement,TIP_PF comparare,TIP_PF


interschimb){
for(int i=0;i<nrel-1;i++){
for(int j=i+1;j<nrel;j++){
void* vi = (char*)baza + i*dimElement;
void* vj = (char*)baza + j*dimElement;
if(comparare(vi,vj)>0){
interschimb(vi, vj);
}
}
}

void BubbleSort(void* baza,size_t nrel,size_t dimElement,TIP_PF comparare,TIP_PF


interschimbat){

bool interschimb;

do{
interschimb=false;

for (int i=0;i<nrel-1;i++){


void* vi = (char*)baza + i*dimElement;
void* vip=(char*)baza+(i+1)*dimElement;
if (comparare(vi,vip)>0){
interschimbat(vi, vip);
interschimb=true;
}

}while (interschimb==true);
}

void CocktailSort(void* baza,size_t nrel,size_t dimElement,TIP_PF comparare,TIP_PF


interschimbat){

bool interschimb;

do{
interschimb=false;
for (int i=0;i<nrel-1;i++){
void* vi = (char*)baza + i*dimElement;
void* vip=(char*)baza+(i+1)*dimElement;
if (comparare(vi,vip)>0){
interschimbat(vi, vip);
interschimb=true;
}

if(interschimb) break;
for(int i=nrel-1 ; i>=0;i--){
void* vi = (char*)baza + i*dimElement;
void* vip=(char*)baza+(i-1)*dimElement;
if (comparare(vi,vip)>0){
interschimbat(vi, vip);
interschimb=true;
}
}
}
while (interschimb==true);
}

int main()
{srand(time(NULL));
int n;
cout<<"introduceti nr de elemente a vectorului de sortat:"<<endl;
cin>>n;
int v[n];
int aux[n];
for( int i= 0 ; i < n; ++i ) {
v[i]= rand()%n;
aux[i]=v[i];
cout<<v[i]<<",";
}
DirectSort(v, n, sizeof(int),comp_int,interschimb_int);
cout<<endl<<"vectorul sortat cu direct sort:"<<endl;
for( int i= 0 ; i < n; ++i ) {

cout<<v[i]<<",";
v[i]=aux[i];//v merge inapoi la forma initiala
}

BubbleSort(v, n, sizeof(int),comp_int,interschimb_int);
cout<<endl<<"vectorul sortat cu bubble sort:"<<endl;
for( int i= 0 ; i < n; ++i ) {

cout<<v[i]<<",";
v[i]=aux[i];//v merge inapoi la forma initiala
}
CocktailSort(v, n, sizeof(int),comp_int,interschimb_int);
cout<<endl<<"vectorul sortat cu insert sort:"<<endl;
for( int i= 0 ; i < n; ++i ) {

cout<<v[i]<<",";
v[i]=aux[i];//v merge inapoi la forma initiala
}

return 0;
}

You might also like