int lineal (int matriz[], int n, int el)
{
int i;
for (i=0;i<n;i++)
if (matriz[i]==el) return i;
return -1;
}
int binariaNoRecursiva (int matriz[], int n, int el)
{
int centro,izqda,drcha,encontrado;
izqda= 0;
drcha= n-1;
encontrado= 0;
while (izqda<=drcha && !encontrado) {
centro=(izqda+drcha)/2;
if (el==matriz[centro])
encontrado=1;
else if (el<matriz[centro])
drcha=centro-1;
else izqda=centro+1;
}
return encontrado?centro:-1;
}
int binariaRecursiva (int matriz[], int n, int el)
{
int centro,aux;
if (n>0) {
centro=n/2;
if (matriz[centro]>el)
return binariaRecursiva(matriz,centro,el);
else if (matriz[centro]<el) {
aux= binariaRecursiva(matriz+centro+1,n-centro-1,el);
if (aux==-1) return -1;
else return centro+1+aux;
}
else return centro;
}
else return -1;
}
int binariaRecursiva2 (int matriz[], int n, int el)
{
int centro;
if (n>0) {
centro=n/2;
if (matriz[centro]>el)
return binariaRecursiva2(matriz,centro,el);
else if (matriz[centro]<el) {
if (binariaRecursiva2(matriz+centro+1,n-centro-1,el)==-1) return -1;
else return centro+1+binariaRecursiva2(matriz+centro+1,n-centro-1,el);
}
else return centro;
}
else return -1;
}