Я пытаюсь разумно отсортировать коллекцию. У меня есть коллекция из частей данных. Но я знаю , что это припадки данных в неравных размеров бункеров. Я не знаю, как правильно выбирать конечные точки для правильного размещения данных. например:
Скажем, у меня в коллекции 12 предметов, и я знаю, что данные поместятся в 3 корзины:
Index: 1 2 3 4 5 6 7 8 9 10 11 12
Value: 1 1 1 3 3 3 3 3 3 5 5 6
Как правильно выбрать мои контрольные точки для ячеек ?
Текущая реализация, которую я имею, разбивает данные на ячейки равномерного размера, а затем берет среднее значение конечных точек, чтобы найти индексы для конца корзин. Так что это работает так:
Index: 1 2 3 4 5 6 7 8 9 10 11 12
Value: 1 1 1 3 3 3 3 3 3 5 5 6
first break evenly: i = 1-4, 5-8, 9-12
mean endpoints: between 4 and 5: (3+3)/2 = 3
between 8 and 9: (3+3)/2 = 3
Итак, теперь все, что ниже 3, помещается в корзину 1, все, что выше 3, но ниже 3, помещается в корзину 2, а все, что выше 3, помещается в корзину 3. Вы можете видеть, в чем заключается моя проблема. Если данные имеют неравные ячейки, мой метод завершится неудачно.
Друг упомянул алгоритм k-ближайшего соседа, но я не уверен.