1. Как вариант вот подумалось: Оригинал (в прошлом а1) хранить как строку а массив а2 получать из str.split ("") ...хотя оригинал то всё равно менять нужно. Хех.;
2. Одномерные/двумерные - это был только пример придуманный на ходу (не приводить же весь исходник!) На деле все многомерное. String конечно один но условно поделен на строки шириной Wdth - координату получал как Y*Wdth+X.
3. Сказать по правде - массив играет роль карты. Зачем сортировать карту?
4. Не спорю.
зы. А как быть с возможностью изменения сразу нескольких ячеек? (Arr[1][1]="1"; Arr[1][2]="2"; Arr[1][3]="3"; ...и т.д.) Для строки это казалось прощще...но только казалось
