Documente Academic
Documente Profesional
Documente Cultură
5. S se scrie subprogramul C pentru cutarea unei valori date ntr-un vector ordonat
(cutarea binar).
int cauta_binar(float *v,int li,int ls,float k)
{ int mij;
if(li>ls)
return -1;
int mij=(li+ls)/2;
if(v[mij]==k)
return mij;
if(v[mij]>k)
return cauta_binar(v,li,mij-1,k);
return cauta_binar(v,mij+1,ls,k);
}
7. S se scrie subprogramul C care determin prima apari ie a unei valori date ntr-un
vector sortat. Cutarea se va realiza secven ial.
int cauta_s(float *v,int i, int n,float k)
{ int poz;
if( (i==n) || (k<v[i]) )
poz=-1;
else
if(k==v[i])
poz=i;
else
poz=cauta_s(v,i+1,n,k);
return poz;
}
if(i>m)
for(;j<p+1;k++,j++)
sup[k]=x[j];
else
for(;i<=m;i++,k++)
sup[k]=x[i];
for(i=n;i<p+1;i++)
x[i]=sup[i-n];
}
void sort_int(int li,int ls)
{ int mij;
if(li<ls)
{ mij=(li+ls)/2;
sort_int(li,mij);
sort_int(mij+1,ls);
interclasare(v,li,mij,ls);
}
}
void main()
{ int i;
unsigned n;
printf("Dimensiunea");
scanf("%u",&n);
for(i=0;i<n;i++)
scanf("%f",&v[i]);
sort_int(0,n-1);
printf("\nVectorul sortat ");
for(i=0;i<n;i++)
printf("%8.3f ",v[i]);
getch();
}
9. S se scrie subprogramul C pentru sortarea cresctoare prin inserare a unei secven e de
numere reale.
void insera(float *v,int n,float x)
{ int i,j;
for(i=0; (i<n) && (x>v[i]); i++);
for(j=n; j>=i+1; j--)
v[j]=v[j-1];
v[i]=x;
}
void inssort(float *v,int n)
{ if(n)
{ inssort(v,n-1);
insera(v,n-1,v[n-1]);
}
}