A language can sort numbers and strings on its own: it already knows which of two of them comes first. For objects of your own class it doesn't, until the class tells it. Every language has a way for a class to say how two of its objects compare. Once a class has it, the language's own sort can sort a list of those objects, with no comparison written at the call.
Write:
- a class
Student, created byStudent(name, grade), that can compare itself with another student: a student comes first if their grade is higher; when two grades are equal, the name that comes first in alphabetical order (A to Z) comes first; - a method
rankStudents(students)in the classSolution, which sorts the students with your language's own sort, using that comparison, and returns their names in that order.
TypeScript's sort has no comparison interface to look for. The convention is a method compareTo(other) that returns a negative number when this student comes first, a positive number when other does, and 0 when they are equal; sort gets a function that calls it.
Don't write your own sorting loop. The program also checks your comparison directly: for each two neighbours in the list you return, it asks Student whether the first one comes before the second.
Example 1:
Input: students = [("Ana", 90), ("Bob", 85), ("Cid", 90)]
Output: Ana Cid Bob
Explanation: Ana and Cid have the highest grade, 90. They tie, so their names decide: Ana comes before Cid.
Bob, with 85, comes last.
Example 2:
Input: students = [("Eve", 55), ("Dan", 100), ("Bea", 0), ("Cal", 99)]
Output: Dan Cal Eve Bea
Explanation: All the grades are different, so only the grades decide, from 100 down to 0.
Example 3:
Input: students = [("Max", 88), ("Leo", 88), ("Anna", 88), ("Ann", 88)]
Output: Ann Anna Leo Max
Explanation: Everyone has the same grade, so the list is in alphabetical order.
"Ann" comes before "Anna": when one name is the start of the other, the shorter one comes first.
Constraints:
- There are 1 to 100 students.
0 <= grade <= 100- A name has 2 to 10 letters: a capital letter, then lowercase letters. No two students have the same name.
The language's sort takes O(n log n) comparisons for n students, and each comparison takes constant time.
Free plan: 30 tutor messages. PRO is unlimited.
