61> Eseguire una ricerca binaria su un array v dimensionato DIM=10.
Inserire un valore esternamente e trovare se appartiene o meno a v.
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#define DIM 10
void carica(int []);
void sort(int []);
void visualizza(int []);
int ricerca(int [],int);
int main(){
int v[DIM],key,ris;
srand(time(NULL));
carica(v);
visualizza(v);
sort(v);
visualizza(v);
printf("Inserire un numero da cercare: ");
scanf("%d",&key);
fflush(stdin);
ris=ricerca(v,key);
if(ris==-1){
printf("Valore non trovato");
} else {
printf("Valore trovato nella posizione %d",ris);
}
return 0;
}
void carica(int v[DIM]){
int i;
for(i=0;i<DIM;i++){
v[i]=rand()%99+1;
}
}
void visualizza(int v[DIM]){
int i;
for(i=0;i<DIM;i++){
printf("%d ",v[i]);
}
putchar('\n');
}
void sort(int v[DIM]){
int i,j,temp;
for(i=0;i<DIM-1;i++){
for(j=i+1;j<DIM;j++){
if(v[i]>v[j]){
temp=v[i];
v[i]=v[j];
v[j]=temp;
}
}
}
}
int ricerca(int v[DIM],int key){
int i,s,m,e; //s=start m=mid e=end
s=0;
e=DIM-1;
while(s<=e){
m=(s+e)/2;
if(v[m]==key){
return m;
}
if(v[m]>key){
e=m-1;
} else {
s=m+1;
}
}
return -1;
}
061.c