ho le seguenti informazioni di studenti con segni corrispondenti e si collocamigliore struttura dati per memorizzare i marchi e le fila degli studenti
Name Marks Rank
A 30 1
B 20 2
C 10 3
Il rango dello studente è inversamente proporzionale ai segni dello studente. Devo trovare la migliore struttura dati per memorizzare le informazioni di cui sopra in modo che le seguenti operazioni vengano eseguite nel modo più ottimale (Migliore complessità temporale). Si può presumere che il nome dello studente sia unico.
- nome dello studente Dato, trovare segni e di rango
- rango Dato, trovare marchi e nome dello studente
- Aggiornamento segni di uno studente.
Sto pensando di utilizzare due hashmap una per lo studente e la mappatura dei contrassegni e un'altra per il nome dello studente e la mappatura del rango. C'è una struttura dati migliore per questo? C'è un modo in cui posso fare uso del fatto che il grado è inversamente proporzionale ai voti.
HashMaps sono (in media) O (1) per l'operazione che si stanno cercando, quindi non si può battere questo. Tuttavia, richiedono spazio. Quello che puoi fare è: creare una classe con Nome, Segna (? Uno o molti), classifica. Quindi due hashmap per nome e classifica che puntano alla classe di quell'utente. Costoso ma funziona. – EsseTi
Un'altra opzione sarebbe quella di avere una classe comparabile di Nome + Contrassegni, un metodo di confronto da ordinare automaticamente in base al rango e una semplice Lista per archiviarli tutti. Pro: l'aggiornamento del rank è automatico, richiede meno spazio, il codice è probabilmente più facile da leggere. Contro: più lento delle hashmap, l'accesso non è più o (1). – Joel
Perché non usare uno 'classe Student' con campi' name' e 'marks' e ottenere il rank per ordine inverso l'elenco degli studenti per' marks'? È anche possibile aggiungere un attributo 'rank' che viene ripristinato ogni volta che viene ordinato l'elenco. –