Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Ricerca Binaria

  1. #1

    Ricerca Binaria

    ciao a tutti, ho un problema con la ricerca binaria. Creo un arrayList e lo riempio con un while e fin qui tutto bene l'arraylist viene riempito...adesso ordino l'arraylist e lo stampo... viene anche ordinato, provo a fare la ricerca e mi restituisce null per i dati che si trovano nella posizione 0 e nell'ultima posizione...come mai?? dove sbaglio?? grazie a tutti!

    codice:
    public String ricercaPerNome(String nome){
    		int low = 0;
    		int high = persone.size()-1;
    		
    		while(low<= high){
    			int mid = (low+high)/2;
    			int diff = nome.compareToIgnoreCase(persone.get(mid).getNome());
    			if(diff ==0)
    				return persone.get(mid).getNome();
    			else
    				if(diff <0)
    					low = mid+1;
    				else
    					high = mid-1;
    		}
    		return null;	
    	}

  2. #2
    adesso ho riprovato ed ho capito che confronta solo il primo elemento che si va a visitare...quindi se è uguale lo restituisce, altrimenti no.

  3. #3
    Ho risolto in questo modo:

    codice:
    public String ricercaPerNome(String nome){
    		int low = 0;
    		int high = persone.size()-1;
    		
    		while(low<= high){
    			int mid = (low+high)/2;
    			
    			if(persone.get(mid).getNome().compareToIgnoreCase(nome) ==0){
    				return persone.get(mid).getNome();
    			}
    			else{
    				if(persone.get(mid).getNome().compareToIgnoreCase(nome) <0){
    					low = mid+1;
    				}
    				else{
    					high = mid-1;
    				}
    		}
    		}
    		return null;	
    	}
    il problema era il compareto... grazie lo stesso a tutti!

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.