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; }