Главная » Статьи » Java » Java Ranger Basic

День 5/21
Iteration (Loops)


Циклов в Java 3 – for, while, do...while.
В процедурных языках программирования есть два независимых способа организовать выполнение однотипных действий – циклы и рекурсия.

Есть несколько алгоритмов инвертирования массивов. Есть алгоритмы in-place и out-of-place.
Out-of-place подразумевает, что мы заведем новый массив, и в нем будут те же числа, что в старом массиве, только в обратном порядке.
In-place означает, что прямо в оригинальном массиве мы переставим числа. При этом первоначальный массив будет уничтожен.

In-place алгоритм выглядит так:

public static void invert(int data) {
for (int k = 0; k < data.length / 2; k++) {
int tmp = data[k];
data[k] = data[data.length – 1 – k];
data[data.lenght – 1 – k] = tmp;
}
}

Если тут количество элементов нечетное, то в результате деления результат будет округлен в меньшую сторону. Это значит, что центральный элемент не будет затронут, он будет стоять на своем месте.

Также существует рекурсивное решение данной задачи, без использования циклов:

public static void invertRec(int data, int k) {
if (k < data.length / 2) {
int tmp = data[k];
data[k] = data[data.length – 1 –k];
data[data.lenght – 1 – k] = tmp;
invertRec(data, k + 1);
}
}

Здесь переход вверх происходит по-другому. Наш метод еще раз вызывает сам себя, но с модифицированными данными.

При вложенных циклах используется декартово умножение и внутренний цикл выполнится i * j раз – произведение итераций внутреннего и внешнего циклов.

При разработке всегда нужно помнить, что каждый if или while внутри простого цикла снижает скорость системы в 2 раза. Потому что операторы ветвления очень плохо влияют на современные процессоры.



В следующей теме мы рассмотрим: JVM, ClassLoaders

Источник: http://becomejavasenior.com/courses/?utm_source=Java+Email+Courses&utm_campaign=aa710df388-JavaRangerBasicIntro&utm_medi
Категория: Java Ranger Basic | (06.10.2015) W
Просмотров: 264 | Теги: Basic, ranger, java | Рейтинг: 0.0/0
Всего комментариев: 0
avatar