Ich möchte eine Rangliste implementieren und mir wird klar, dass dies, obwohl dies eine einfache Aufgabe zu sein scheint, sehr komplex werden kann. Ich könnte einfach eine Datenbank mit geeigneten Indizes verwenden, aber ich würde gerne wissen, ob es eine effiziente Datenstruktur gibt, die die folgenden Operationen unterstützen kann.Effiziente Datenstruktur für die Bestenliste
- Add Punktzahl für einen bestimmten Spieler
- beste Ergebnis für einen bestimmten Spieler
- Rang abrufen Abrufen von für einen bestimmten Spieler
- Rufen Sie die Spieler mit der Partitur über und unter aktuellen Spieler Rang
- Unterstützung anderer Zeitrahmen: der heutige Spielstand, diese Woche, dieses Jahr usw.
- Skalen zu ~ 100.000 Spielern
- Speicherbedarf so klein wie möglich e (d.h. läuft auf billige Maschine)
Danke für die Hilfe!
Haben Sie eine maximale Anzahl von Scores/Spieler? Wenn nicht, könntest du viele Partituren haben, wenn du 100K-Spieler hast ... Muss das Ganze auf einmal im Speicher sein oder kann es meistens auf der Festplatte sein (Flash, was auch immer)? Wie sehen Partituren aus (0-255? 0-65525? Strings?). Wenn Sie "billige Maschine" sagen, meinen Sie einen alten PC, richtig, kein Telefon oder ein Arduino. – angelatlarge