PDA

View Full Version : [Java] Aiuto array, mi suggerireste un algoritmo funzonante?


djadry
30-01-2013, 12:25
Con tutta sopresa, il prof mi ha avvisato che avrò domani l'orale di programmazione :eek:

Nello scritto l'algoritmo che ho utilizzato non era perfetto, e vorrei chiedervi un suggerimento per come potrei risolvere, nel caso me la dovesse chiere domani:

In pratica ho un array di int a e un array di int b. devo creare un metodo boolean che restituisca true nel caso in cui b contenga almeno un elemento di a. Gli array possono anche essere di lunghezza differente, e i numeri in b non è detto che siano ordinati dal minore al maggiore...

Grazie :cry:

banryu79
30-01-2013, 13:15
Nello scritto l'algoritmo che ho utilizzato non era perfetto, e vorrei chiedervi un suggerimento per come potrei risolvere, nel caso me la dovesse chiere domani:

In pratica ho un array di int a e un array di int b. devo creare un metodo boolean che restituisca true nel caso in cui b contenga almeno un elemento di a. Gli array possono anche essere di lunghezza differente, e i numeri in b non è detto che siano ordinati dal minore al maggiore...

Beh, ecco il brute force più banale del mondo:

public class Example01 {

public static void main(String[] args) {
int[] a = {1,2,3,4,5,6};
int[] b = {7,8,9,10,11,6};
String result = findAnEqualElem(a,b) ? "Almeno un elemento" : "Nessun elemento";
System.out.println(result + " di a è presente in b");
}

private static boolean findAnEqualElem(int[] a, int[] b) {
for (int ia : a) {
for (int ib : b) {
if (ia == ib) return true;
}
}
return false;
}
}

djadry
30-01-2013, 13:28
che stupido, nell'ansia dell'esame non avevo proprio pensato al for-each :muro:

ora mi è venuto in mente che era fattibile anche con due cicli for innestati :muro:
for(int i = 0; i < a.length; i++){
for(int j = 0; j < b.length; j++)
if(a[i] == b[j])
return true;
}
return false;

grazie tante!