home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.disi.unige.it
/
2015-02-11.ftp.disi.unige.it.tar
/
ftp.disi.unige.it
/
pub
/
.person
/
CataniaB
/
teach-act
/
laboratorio
/
lab-19-4-99
/
ese6.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-05-10
|
1KB
|
60 lines
/* bin search */
#include <stdio.h>
#define MAX 100
int binsearch(int,int*,int);
int main()
{
int v[MAX];
int i,n,num;
/* leggo la dimensione del vettore */
printf("fornisci il numero di elementi del vettore: ");
scanf("%d",&n);
if (n < 0)
{
printf("errore!");
return -1;
}
/* leggo il primo vettore */
for (i=0; i < n;i++)
{ printf("\nfornisci valore %d: ",i+1);
scanf("%d",&v[i]);
}
/* leggo l'elemento da cercare */
printf("\nfornisci il numero da cercare: ");
scanf("%d",&num);
/* stampo il risultato della funzione di ricerca */
printf("\n\nil numero cercato e' in posizione %d",binsearch(num,v,n)+1);
printf("\n(0 significa non c'e')\n\n ");
return 0;
}
int binsearch(int x, int v[], int n)
{
int low = 0, high = n - 1, mid;
while (low <= high)
{
mid = (low + high) / 2;
if (x < v[mid])
high = mid - 1;
else if (x > v[mid])
low = mid + 1;
else
return mid; /* trovato */
}
return -1; /* non trovato */
}