Обозначение Big O все о приближениях. Это облегчает сравнение алгоритмов.
Если вы представляете свой массив элементов, поиск может иметь порядок N (вы должны просмотреть каждый элемент, чтобы найти нужный элемент), это может быть порядок Log (N), если у вас есть упорядоченная коллекция, или он может даже заказ 1 в зависимости от типа вашей коллекции.
Здесь важно посмотреть на ваш алгоритм и определить, какие ключевые операции повторяются.
Foreach, безусловно, является операцией порядка N, по определению вы должны оперировать каждым элементом в вашем списке. O (N)
Следующим является ваш if InArray 2. Это звучит как поиск по массиву, который, скорее всего, будет неупорядоченным, так что это будет порядок N (линейный поиск). Таким образом, ваша сложность теперь будет O (N * M). (для каждого n элементов в массиве 1 выполните поиск порядка N по массиву 2).
Наконец, у вас есть толчок массива. Я не знаю вашу среду, но это может быть порядок 1 или порядок N, если массив необходимо перераспределить и скопировать для роста. Примем порядок 1 для простоты. Следовательно, ваша сложность в Большой О равна O (N * M).
Так что теперь лучше всего, чтобы каждый элемент нашел свою копию с первой попытки и выполнил толчок массива, который был бы O (N * 1 * 1) = O (N).
В худшем случае каждый элемент не может быть найден во втором списке, что приводит к полному поиску всех элементов в массиве 2. Следовательно, сложность равна O (N * M).
Ваши учителя хотят понять ваше мышление, поэтому покажите им свои предположения. Я настоятельно рекомендую вам прочитать точный вопрос и информацию, которую вы получили, прежде чем полагаться на приведенные здесь предположения. Возможно, вам сообщили язык / платформу, в которой указывалось бы точное наказание и алгоритмы, используемые в каждом случае. Надеюсь, это поможет:)