Hier sind einige Einschränkungen für eine Datenstruktur, die ich brauche. Es sieht so aus, als ob keine der üblichen Datenstrukturen (ich werde die, an die ich im Folgenden gedacht habe) so gut passen. Kann jemand einen vorschlagen, an den ich vielleicht nicht gedacht habe?Beste Datenstruktur für die folgenden Einschränkungen?
- Ich muss Lookups durch unsigned Integer-Schlüssel durchführen können.
- Die Elemente, die gespeichert werden sollen, sind benutzerdefinierte Strukturen.
- Diese Indizes werden spärlich sein, normalerweise extrem. Reguläre Arrays sind out.
- Die Häufigkeit jedes Index wird eine ungleichmäßige Verteilung haben, wobei kleine Indizes viel häufiger sind als große Indizes.
- N wird normalerweise klein sein, wahrscheinlich nicht größer als 5 oder 10, aber ich möchte mich nicht zu sehr darauf verlassen, weil es manchmal viel größer sein könnte.
- Der konstante Begriff ist sehr wichtig. Ich brauche wirklich schnelle Lookups, wenn N klein ist. Ich habe bereits generische Hashtabellen ausprobiert und, empirisch, sind sie zu langsam, , selbst wenn N = 1, was keine Kollisionen bedeutet, wahrscheinlich wegen der Menge an involvierter Indirektion. Ich wäre jedoch offen für Vorschläge zu speziellen Hash-Tabellen, die andere erwähnte Einschränkungen nutzen.
- Insertionszeit ist nicht wichtig, solange die Retrieval-Zeit ist schnell. Sogar die Einsetzzeit von O (N) ist gut genug.
- Platzeffizienz ist nicht besonders wichtig, obwohl es wichtig genug ist, nicht nur normale Arrays zu verwenden.
Welche Sprache verwenden Sie? – kmkaplan
wie die sehr spezifischen Einschränkungen, macht für eine interessante und potenziell sehr nützliche Antwort. Ob die Sprache, die Sie verwenden, Grenzüberprüfungen annimmt, kann * einen Unterschied machen. Wenn Sie auf bestimmte Aromen von. NET-Methoden mit nicht primitiven Strukturen sind nicht inline, die Farbe einige Dinge – ShuggyCoUk