![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| armor85 |
|
||||
![]() Злой программер ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2007 Где: Сочи, блин! Репутация: нет Всего: -1 |
Здравствуйте,
есть массив вида
как можно сгруппировать элементы массива по координатам, т.ё имеем, например, шаг 30. Начинаем перебор массива находим первый элемент добавляем в $resultArr, смотрим следующий элемент, если координата x ИЛИ y меньше 30 то добавляем второй элемент к первому, если шаг больше 30 добавляем в $resultArr В конце должно получится массив вида
Пока я делаю это - перебор в переборе, но получается неприлично долго. Как сделать операцию максимально быстрой, используя, по возможности, всего один перебор? |
||||
|
|||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
ну, тут сама формулировка указывает на то, что "сравнение" возможно только при прогоне одного цикла, внутри другого.
вариант облегчения - сравнивать с новым наполняемым массивом, тогда общее количество итераций будет примерно в два раза меньше ещё можно заранее определиться. формируем скажем двумерный массив такого вида $arr[$x][$y] = $count; т.е. на каждую пару координат своё число. а дальше прогоняем всего один раз в цикле все элементы, усредняем их
но в этом случае, если нам в конце не нужен именно такой массив, то придётся прогонять ещё раз для соответствующей обработки. впрочем, получится значительно экономней по сравнению с другими вариантами |
|||
|
||||
| armor85 |
|
|||
![]() Злой программер ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2007 Где: Сочи, блин! Репутация: нет Всего: -1 |
Попробовал, получилось ещё дольше.
Проблема в том что x и y никогда не совпадают, поэтому получается ещё один большой массив, который опять надо перебирать. |
|||
|
||||
| icewind |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 11.4.2009 Где: Ростов-на-Дону Репутация: 20 Всего: 20 |
Одним перебором скорее всего не получится. Покажи свой код, как ты пытался сделать
-------------------- ![]() |
|||
|
||||
| Sentox |
|
|||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
usort();?
Это сообщение отредактировал(а) Sentox - 7.7.2009, 16:33 |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |