В 1 и 2 способе мы делаем лишние действия: считаем и проверяем (1 или 0) элементы, которые уже можно и не учитывать. Можно изменить начальный вид массива, присвоив каждому элементу его порядковый номер. Например, М = (1, 2, 3, 4, 5, 6, 7). Досчитав по элементам массива до S, можно сдвинуть содержимое элементов массива, удалив выбывший элемент. А дальше работать с массивом из N - 1 элемента.
Проанализировав подсчет элементов, можно заметить, что не нужно перебирать каждый элемент, а можно вычислить номер выбывающего по схеме:
h – число, до чего считаем, e – число оставшихся элементов.
В этом способе тоже есть недостаток: приходится делать лишние действия – сдвигать элементы массива. Хотя по времени выполнения этот способ самый медленный, но он позволяет сделать некоторые выводы. Если перенос элементов выполняется не слишком быстро, то, возможно, существует способ не сдвигать элементы, оставив преимущества этого способа: отсутствие проверки на то выбыл уже элемент или нет. Попытка создать более эффективный алгоритм по этим признакам рассматривается в 4 способе.
|
||||||||||||||||||||||||||||||