Home
Home
Tutorials
   PHP
   Java
   Tutti...
Manuali
SmartImage
Marketing
Downloads
Contatti
Affiliati

  Da vedere
Hosting
Statistiche per siti
Corsi per webmaster
Hardware
Processori


  OnFocus
Backup di un database mysql command line, con compressione

Can't use function return value in write context in...

Un'icona per il sito: creare la favicon

  Siti Amici
Miki News
Giochi gratis
Areagratis
Baratto Online
AI Machines
Guide e Manuali Gratis
e-DAI.org
Elenco Domini .it
Ricerca Internet
Rotondella
Sms Game
Fiumicino Web Agency
Add to Technorati Favorites

Tutti i siti amici
Diventa Affiliato

 


Autore: Alessandro
Categoria: java
Livello: normale Livello normale

Trovare il picco di un array unimodale

Come trovarlo ricorsivamente con il metodo divide et impera

Per un esame universitario potrebbe servirvi allenarvi nello scrivere algoritmi divide et impera, prendiamo un esercizio a caso:
Trovare il picco di un array unimodale

Cos'è un array unimodale?
E' un array di questo tipo:
A[0] < A[1] < A[2] < ... < A[p] > A[p+1] > A[p+2] > ... > A[N-1]
cioè parte crescendo fino a un punto di stallo (il picco), poi scende senza più invetire l'andamento.

Ecco come trovare il picco:
//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(vet0, (vet.length)/2vet.length-1));
    }
    
    public static 
int trova_picco(int[] vetint iint mint 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(vetm, (f+m)/2f);
            else
                
//altrimenti pių a sx
                
return trova_picco(veti, (m+i)/2m);
        }
    }
}
Launch4j: creare eseguibili Windows per applicazioni Java Precedente Indice Successivo Ricerca in un vettore con divide et impera
Launch4j: creare eseguibili Windows per applicazioni Java Ricerca in un vettore con divide et impera