если я думаю о координатной плоскости x, y x, y является общим обозначением для упорядоченной пары, но если я использую массив с двумя значениями, у меня есть myArray [row] [col], а строка - y и col является x. Является ли это назад или я просто думаю об этом неправильно? Я думал, что это будет выглядеть как myArray [x] [y], но это неправильно, если мне нужны реальные строки и столбцы (например, в игровой доске). Разве это не будет myArray [y] [x], чтобы действительно имитировать колонку столбцов строк
Являются ли атрибуты x, y и row, col двухмерного массива назад?
Ответ 1
У вас все в порядке, и он чувствует себя немного в обратном направлении. номер строки является координатой y, а номер столбца является координатой x, и все же мы обычно пишем строку, col, но мы также обычно пишем x, y.
Если вы хотите написать свой массив, поскольку [y] [x] зависит или [x] [y] зависит в основном от того, насколько вы действительно заботитесь о макете в памяти (а если да, то какой язык вы используете). и хотите ли вы писать функции/методы, которые могут работать в строках или столбцах изолированно.
Если вы пишете код C/С++, массивы хранятся в Строчном порядке, что означает, что одна строка данных может обрабатываться как 1 мерный массив. Но один столбец данных не может. Если я правильно помню, VB использует стандартный порядок столбцов, поэтому языки меняются. Я был бы удивлен тем, что С# не является также строгим порядком, но я не знаю.
Ответ 2
Неважно, как вы храните свои данные в массиве ([x] [y] или [y] [x]). Важно то, что вы всегда смещаете массив по массиву. Двухмерный массив java - это, по сути, одномерный массив, хранящий второй массив (например, в случае [y] [x] у вас есть длинный массив из [y], в котором каждый y содержит соответствующие [x] массивы для этого строка y).
Чтобы эффективно запускать весь массив, важно получить доступ к данным таким образом, чтобы вам не приходилось выполнять поиск в этом массиве, переходя от одного y-массива-of-xarrays к другому y-массиву -Из-xarrays. То, что вы хотите сделать, - это получить доступ к одному элементу y и получить доступ ко всем x там, прежде чем переходить к следующему элементу y.
Итак, в ситуации Array [y] [x]. всегда имеют первую переменную во внешнем цикле, а вторую во внутреннем цикле:
for (int ys = 0; ys < Array[y].length; ys++)
for (int xs = 0; xs < Array[y][x].length; xs++)
{
do your stuff here
}
И, конечно, предварительно выделите из массива как Array.length, чтобы не допустить, чтобы эти значения выполнялись за каждый цикл.
Ответ 3
Собственно, это вам. В вашем вопросе нет права думать. Например, я обычно рассматриваю одномерный массив как строку ячейки. Поэтому, на мой взгляд, это массив [col] [row]. Но это действительно зависит от вас...
Ответ 4
Бьюсь об заклад, на этом есть много разных мнений. Суть в том, что это не имеет большого значения, если вы последовательны. Если у вас есть другие библиотеки или подобные им, которые будут использовать одни и те же данные, имеет смысл делать все возможное для упрощения интеграции.
Если это строго в вашем собственном коде, сделайте все, что вам будет удобно. Мое личное предпочтение было бы использовать myArray [y] [x]. Если они велики, могут быть преимущества производительности, связанные с тем, что элементы, к которым вы собираетесь получить доступ одновременно, вместе. Но я бы не стал беспокоиться об этом, пока на очень поздней стадии, если вообще.
Ответ 5
Ну, действительно, если вы думаете о строке как о элементах по оси x, а затем 2d-массив представляет собой группу элементов строки на оси y, то это нормально использовать y для работы в строке, поскольку вы уже знайте x (для этой конкретной строки x всегда одна и та же, она меняется со своими индексами), а затем используйте x для работы с несколькими элементами ряда (строки располагаются вертикально, каждый из которых имеет определенное значение y)
Ответ 6
Вот что я делаю для собственного здравомыслия:
int x = array[0].length;
int y = array.length;
И затем для каждого отдельного вызова массива я пишу:
array[y][x]
Это особенно полезно для графических алгоритмов и переворачивания матрицы по горизонтали/вертикали.