//Attenzione!
//si assume per ipotesi che l'array sia unimodale
public class array_unimodale {
public static void main(String[] args){
int[] vet={1,2,3,4,7,23,12,11,10,8,7,4,2,1};
System.out.println(trova_picco(vet, 0, (vet.length)/2, vet.length-1));
}
public static int trova_picco(int[] vet, int i, int m, int f){
//Se sono minori sia sx che dx allora m č il picco!
if ((vet[m-1]<vet[m]) && (vet[m+1]<vet[m]))
return m;
//Altrimenti cerco da un'altra parte
else {
//Se a dx č pių grande...
if (vet[m+1]>vet[m])
//...cerco pių a dx
return trova_picco(vet, m, (f+m)/2, f);
else
//altrimenti pių a sx
return trova_picco(vet, i, (m+i)/2, m);
}
}
}
|