Пока у каждого объекта есть способ сравнения (обычно это делается с помощью функции «CompareTo (T other)»), mergesort является жизнеспособным решением. как это:
public int compareTo(T other){
if this.getNumber() == other.getNumber(){
return 0;
}
else if this.getNumber() > other.getNumber(){
return 1;
}
else{
return -1;
}
}