Den Rang eines Users herausfinden, ohne alle Users aufzulisten

Erste Frage Aufrufe: 704     Aktiv: 17.08.2020 um 09:36

1

Ich habe folgende Problemstellung: 

es gibt 100 Tausend Users. Gegeben ist ein User A mit einem Punktestand von 3231. Ich will jetzt den Rang von User A herausfinden, abhängig von seinem Punktestand. Das Problem ist, ich möchte nicht alle 100k Users nach Rang sortiert auflisten und den Index von User A nehmen, was schon funktionieren würde, aber Hauptspeicher von meinem kleinen Laptop ist dafür zu wenig. 

meine Frage: 
Kann man mathematisch den Punkte-Rang leichter herausfinden, mit diesen Informationen: 
- es gibt insgesamt 100k Users (oder Liste von nach Punkte sortierten Users)
- ID und Punkte von User A

zu vermeiden ist die Liste von allen 100k Users. 

Vielen Dank im Voraus

Diese Frage melden
gefragt

Punkte: 17

 

Das hört sich an als hättest du nur die Info es gibt "100k User" ohne Bezug auf wie viel Punkte die jeweils haben. Dann kannst du natürlich auch nicht sagen, wie du User A einsortieren sollst.   ─   orthando 17.08.2020 um 07:52

kann man nicht irgendwie letzten User nehmen mit meistem Ranking und den Abstand berechnen etc...? ich kann nicht zu Ende denken, vllt ist es nicht möglich.   ─   holymoly 17.08.2020 um 08:03

Auch das ist nicht möglich. Selbst wenn du weißt, dass der User#1 50k Punkte hat, weißt du nicht wie viele User zwischen User A und User#1 liegen. Das kann keiner sein, das können 99k sein.
Mit den dir zu Verfügung stehenden Infos ist das nicht möglich.
  ─   orthando 17.08.2020 um 08:08

@orthando, alles klar, danke dir   ─   holymoly 17.08.2020 um 09:35
Kommentar schreiben
1 Antwort
1

Nein, das ist ohne weitere Informationen nicht möglich.

Wenn nur die Punkteanzahl von A bekannt ist, dann könnten die restlichen Nutzer alle 0 oder alle 3231 + 1 Punkte haben. In einem Fall wäre A der Erste und im anderen der Letzte.

> aber Hauptspeicher von meinem kleinen Laptop ist dafür zu wenig.

Das ist dann wohl weniger ein mathematisches Problem.

Ich empfehle dir nicht die ganze Datenbank in den Arbeitsspeicher zu laden. Du kannst die ersten 100 Nutzer verarbeiten und die Anzahl Nutzer mit einer höheren Punktezahl als A speichern und so weiter. Die Zahl der Nutzer mit einem Punktestand höher als A ist dann der Rang von A.

Dann hast du Speicherbedarf von 100 mal der Grösse eines einzelnen Eintrags plus den Speicherbedarf einer Zahl.

Diese Antwort melden
geantwortet

Student, Punkte: 140

 

danke schön   ─   holymoly 17.08.2020 um 09:36

Kommentar schreiben