| Главная » Статьи » 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 | |
| Просмотров: 264 | | |
| Всего комментариев: 0 | |