Ich versuche, eine sortierte Sammlung intelligent abzulegen. Ich habe eine Sammlung von Daten. Aber ich weiß, dass diese Daten in ungleich große Behälter passen. Ich weiß nicht, wie ich die Endpunkte intelligent auswählen soll, damit sie richtig zu den Daten passen. zum Beispiel:m
Angenommen, ich habe 12 Artikel in meiner Sammlung und weiß, dass die Daten in 3 Fächer passen:
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
Wie wähle ich intelligent meine Haltepunkte für die Fächer von ?
Die aktuelle Implementierung, die ich habe, unterteilt die Daten in gleich große Bins und verwendet dann den Durchschnitt der Endpunkte, um die Indizes für das Ende der Bins zu finden. So funktioniert es:
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
Jetzt passt alles unter 3 in Fach 1, alles über 3, aber unter 3 in Fach 2 und alles über 3 in Fach 3. Sie können sehen, was mein Problem ist. Wenn die Daten ungleiche Bins haben, schlägt meine Methode fehl.
Ein Freund erwähnte den k-Nächsten-Nachbarn-Algorithmus, aber ich bin mir nicht sicher.