Suggest me any book or paper on for loops or links!!
Чтобы закрепить ваше понимание 2 для петель, вы можете попробовать потренироваться на http://www.codingbat.com/java - более того, есть мгновенная и (в основном) полная оценка!
Задачи String-3 или Array-3 могут использовать 2 для циклов.
Если у вас есть двумерный массив, и вам нужно достичь всех индексов, вы можете использовать 2 для циклов. Таким образом, аналогично, если у вас есть 3D-массив, вы можете использовать 3 вложенных цикла. Помните, что внутренняя часть цикла заканчивается раньше внешней, поэтому, если у вас есть 2 цикла, внутренний код будет циклически повторяться в течение времени, которое указывает внутренний цикл, в течение количества раз, которое указывает внешний цикл. Вы можете нарисовать диаграмму:
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 2; j++) {
for(int k = 0; k < 2; k++) {
//do something
}
}
}
Визуальное представление:
i: 0-----------1
| |
j: 0-----1 0-----1
| | | |
k: 0---1 0---1 0---1 0---1
Если я назначу буквы:
i: A-----------B
| |
j: C-----D E-----F
| | | |
k: G---H I---J K---L M---N
, где X1 является первой частью X (перед вложенным циклом for), а X2 - второй частью (после вложенного цикла for), порядок выполнения:
A1, C1, G, H, C2, D1, I, J, D2, A2, B1, E1, K, L, E2, F1, M, N, F2, B2
Так что вам не нужно изображать n-мерные массивы, когда вы смотрите на петли.
Однажды мои преподаватели сказали нам, что любое приложение, которое использует меньше для циклов, является наиболее эффективным. Это реально?
Если ваш цикл for предполагает вычисление значения, подобного формуле, было бы быстрее и, возможно, более эффективно просто вставить элементы в формулу. Но, как правило, самый медленный алгоритм Big O будет влиять на эффективность программы больше всего - так что отдельный цикл for, который зависит от n
(как условие остановки), не будет сильно замедлять программу, если он также будет вложен в циклы которые зависят от n
.