Изучаю большую нотацию. Есть задача:
Дано два массива и надо найти общие элементы. Пример:
A[ ] = {4,2,5,6}
B[ ] = {3,7,6,9}
Надо, чтобы алгоритм нахождения был быстрее чем O(n^2).
Для решения данного вопроса надо написать программу и описать её принцип работы.
P.S. Написать алгоритм перебора легко, а вот как сделать так, чтобы это было быстрее O(n^2)?
edited:
Вариант решения:
import java.util.Arrays;
public class common {
public int CommonElement(int a[], int b[]) {
int aLen = a.length;
int bLen = b.length;
int[] c = new int[aLen+bLen];
System.arraycopy(a, 0, c, 0, aLen);
System.arraycopy(b, 0, c, aLen, bLen);
Arrays.sort(c);
for (int i = 0; i < c.length-1; i++) {
if (c[i] == c[i+1]) {
return c[i];
}
}
return -1;
}
public static void main(String[] args) {
int a[] = {4,2,5,6};
int b[] = {3,6,8,9};
common common = new common();
System.out.println("answer = " + common.CommonElement(a, b));
} }