Henryh
@Henryh
Веб-программист

Как разделить значения массива на разные части?

Есть массив числовых значений:
array(16,7,45,23124,45,12231,32345,45,45456,23,456,1212,450...n); // ещё миллион значений


Из него нужно сделать:
array(16,7,45,23124,45,45656,23,456...n);
array(45,12311,32345...n);
array(45456,23,456,1212,450...n);


Нужно лёгкое ресурсонезатратное решение или функция, который разобьёт этот массив на массивы одинакового размера. Тоесть, чтобы сумма значений итоговых массивов была не более 100000 и при этом должно получиться МИНИМАЛЬНОЕ допустимое количество массивов.

Ну или просто вывелись значения или ключи в нужном порядке.

Проблема сложнее чем кажется на первый взгляд!
Какие есть идеи?

upd: Значения разрывать нельзя.
  • Вопрос задан
  • 940 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега PHP
♬♬
Похоже на задачу об упаковке в контейнеры (англ. "bin packing"). Алгоритмов много. Можно решить быстро и неоптимально (first fit), получше (best fit) или очень долго и оптимально (алгоритм MTP (8Mb pdf, на англ.)).

First fit – идти последовательно по числам и класть их в текущий контейнер, пока помещаются. При наполнении/переполнении переходить к следующему контейнеру.

Данные у вас случайные, нет никаких закономерностей, паттернов в распределении значений?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы