Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152

    [java] Ricerca Binaria (Array)

    ciao a tutti,
    sto studiando la ricerca binaria di array per cercare un elemento piu velocemente nell array, sto cercando di fare quest esercizio, l algoritmo che ho scritto mi sembra corretto ma continua a darmi come risultato 0. Qualcuno mi può dare una mano

    codice:
    /*Scrivere un metodo che, dati due array di interi, ciascuno dei quali è composto da elementi distinti ed è ordinato in modo crescente
    calcola e restituisce il numero di elementi comuni tra i due array. Ad esempio, se i due array valgono rispettivamente {2,7,11,21,48,89}
    e {7,11,15,21,42,45} allora il numero di elementi comuni è 3*/
    
    
    class RB_elementi_comuni{
    	public static int check(int[] a, int[] b){
    
    		
    		int sinistra;                   
    		int destra;
    		int centro;
    		int occ;
    		int i;
    
    
    
    		sinistra=0;
    		destra=a.length;
    		occ=0;
    
    
    
                for(i=0; i<a.length; i++){
    				while(sinistra<destra){
    				centro=(sinistra+destra)/2;
    
    
    			   if(a[i]==b[centro]){
    					occ=occ+1;
    }
    
    				else if(a[i]>b[centro]){
    					destra=centro;
    }
    
    			else
    				sinistra=centro+1;
    
    			} }
    
    			return occ;
    		}
    		public static void main(String[] args){
    			System.out.println(RB_elementi_comuni.check(new int[]{2,7,11,21,48,89}, new int[]{7,11,15,21,42,45}));
    		}
    	}

  2. #2

    Re: [java] Ricerca Binaria (Array)

    Originariamente inviato da keykode20
    destra=a.length;
    destra = a.length - 1;
    Originariamente inviato da keykode20
    if(a[i]>b[centro]){
    destra=centro;
    }
    sinistra = centro + 1
    Originariamente inviato da keykode20
    sinistra=centro+1;
    destra = centro - 1

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152
    Grazie per l'aiuto ma apparte che nn capsico le correzioni ma cmq il programma mi restituisce sempre zero!

  4. #4
    Originariamente inviato da keykode20
    nn capsico le correzioni
    Se l'elemento i-esimo è maggiore dell'elemento medio, devi scandire la parte destra dell'array, altrimenti la parte sinistra; se trovi l'elemento interrompi in qualche modo la ricerca binaria.

    Ecco qui un mio esempio:
    codice:
    /**
     * @(#)Tester.java
     *
     *
     * @author Vincenzo
     */
    public class Tester{
        
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // TODO code application logic here
            int A[] = {2,7,11,21,48,89};
            int B[] = {7,11,15,21,42,45};
            int n = 0;
            
            for(int i = 0; i < B.length; i++){
            	if( Tester.ricercaBinaria(B[i], A) ) n++;
            }
            
            System.out.println("Gli elementi in comune sono: " + n);
        }
        
        public static boolean ricercaBinaria(int e, int A[]){
        	int sx = 0;
        	int dx = A.length-1;
        	while( sx <= dx ){
        		int m = (sx + dx)/2;
        		if( A[m] == e )
        			return true;
        		else if( e > A[m] )
        			sx = m+1;
        		else if( e < A[m] )
        			dx = m-1;
        	}
        	return false;
        }
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.