Задать вопрос
@Urukhayy

Переменная vs цикл в данном случае?

Есть, к примеру, массив из 10 ячеек.
В определённых случаях нужно узнавать, если ли в этом массиве (любой ячейке) определённая цифра.

Решение 1: Цикл с проверкой всех ячеек на содержание цифры.
Решение 2: Попутно с заданием цифры в ячейку массива создавать переменную, которой присвоить индекс ячейки, содержащей эту цифру.

Но при удалении цифры из массива придется очищать и переменную, содержащую индекс этой цифры в массиве.
  • Вопрос задан
  • 189 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
GavriKos
@GavriKos
Конечно цикл. Что вы будете делать, когда вам надо узнать наличие двух определенных цифр?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Mrrl
@Mrrl
Заводчик кардиганов
Зависит от статистики обращений.
Если проверки идут намного чаще, чем изменения массива - то переменная. Причём при "удалении" цифры придётся не просто очищать ячейку, а пройтись по всему массиву - нет ли там ещё одной такой цифры.
Если проверки и изменения идут сериями (много изменений - много проверок), то две переменных. В одной - индекс, в другой признак того, не испортился ли он. Тогда при проверке с "испортившимся" индексом придётся пройтись по массиву и посмотреть, где теперь цифра. Хотя можно просто проверить, что лежит сейчас в ячейке с индексом. Если не нужная цифра - новый проход по массиву. Но здесь уже надо смотреть, какая ячейка портится чаще - та, в которой цифра появилась раньше всего, или та, где она появилась позже всего.
Если проверки идут достаточно редко, то цикл.
В сложных случаях - когда в массиве не 10, а 1000 ячеек, цифр может быть много, меняются они часто, и нужно часто проверять, есть ли цифра, и где именно - надо будет хранить индексы ячеек с этими цифрами в какой-нибудь структуре. Например, в двусвязном списке, построенном на двух массивах, параллельных рабочему. Тогда все изменения и проверки будут работать за O(1).
В общем, всё зависит от ситуации.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы