| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Просмотр матрицы (возрастание+удаленность от (0,)) |
| Автор: Hohhi 16.5.2009, 10:58 | ||
| Здраствуйте! Необходимо реализовать ЭФФЕКТИВНЫЙ алгоритм прохода по двумерному массиву в порядке возрастания его элементов+ если имеется несколько минимальных элементов в порядке их удаленности их от левого верхнего элемента, то есть точки (0,0). То есть имея матрицу: 7 8 5 3 2 4 5 9 6 3 1 2 Пройти её должны в следующем порядке: 10 11 7 4 2 6 8 12 6 3 1 2 Пока что придумал только вариант в лоб, но он мне не нравится:
Опять же, идея далеко не эффективна, помогите оптимизировать |
| Автор: nworm 16.5.2009, 19:25 |
| а почему первый элемент 10? |
| Автор: Hohhi 16.5.2009, 19:37 |
| nworm, первый элемент 1 в третьей строке и третьем столбце а элемент 7 из первой строки и первого столбца необходимо пройти десятым |
| Автор: nworm 16.5.2009, 20:09 |
| 1) За один проход по массиву получаем упорядоченное множество (ai,bi,Ri) ai - номер элемента bi - элемент Ri - расстояние от левого верхнего угла. (11,1,R1) (5,2,R2) (12,2,R3) (4,3,R4) (10,3,R5) (6,4,R6) (3,5,R7) (7,5,R8) (9,6,R9) (1,7,R10) (2,8,R11) (8,9,R12) Структура этого множество - какое-нибудь дерево (или массив). 2) Идём по массиву от минимального bi к максимальному bi. Итоговый массив формируем по формуле: A[ai]=bi |
| Автор: Hohhi 16.5.2009, 20:55 | ||||
может вот так ?
да и потом цель не сфоримровать массив, а опираясь на него провести некие действия в соответствующем порядке. Идея со структурой неплохая, была и у меня. Пожалуй, первое поле ai бесполезно, и лучше бы иметь в нем некую структуру с индексами элемента то, есть: ((3,3),1,R1) ((1,2),2,R2) ((3,4),2,R3) тогда необходимость хранить расстояние исчезает. Далее, действительно, стоит, наверно отсортировать массив для элементов с одинаковыми bi. И пройти по элементам чётко по полученному массиву. Тоже не очень эффективно, но получше |
| Автор: nworm 16.5.2009, 21:53 |
| можно сортировать, можно вставки в древесные структуры пробовать, в зависимости от особенностей задачи |
| Автор: Hohhi 17.5.2009, 22:11 | ||
Вот подошедший вполне вариант, написанный на скорую руку. Конечно, сортировка вставкой, совсем не лучшее, но тут она сойдёт. Кому надо, вот код:
|