В настоящее время у меня проблема с тем, что у меня есть набор данных около 1000 записей.
Каждая запись имеет две соответствующие функции:
weight
(число с плавающей запятой)
origin
(строка / другая сущность)
Я должен отсортировать эти записи по группам макс. четыре записи. Группы могут содержать меньше записей.
- группа из четырех записей: очень хорошо
- группа из трех записей: хорошо
- группа из двух записей: не очень хорошо
- группа из одной записи: действительно плохо (но возможно, если не избежать)
Теперь способ сортировки этих записей в группах зависит от их функций следующим образом:
- макс. дельта
weight
внутри группы может составлять 10% .
- должно быть столько разных значений для
origin
, сколько возможно в каждой группе. Наличие одного дубликата не так уж и плохо, но следует избегать трех или более записей с одинаковым origin
.
В наборе данных weight
имеет диапазон примерно от 20.0 до 120.0 .
Существует около 50 различных возможных значений для origin
.
Я должен реализовать это в php, но не нужно отвечать реализацией php. Одного алгоритма будет достаточно.
Я попытался отсортировать все значения по их weight
, а затем просто разделил их на каждую четвертую запись. Но группы, которые я тогда получаю, трудно переставить с учетом значения origin
. Я думаю, что я мог бы как-то сделать это с помощью неприятной реализации, но я надеюсь, что есть очень элегантный алгоритм, который может сделать это.
Заранее спасибо!