我用快速排序算法对这个对象数组进行了排序。 它将按部门值排序。 但问题是有重复的部门价值。 我想编写代码,如果部门列中有重复值, 然后按 id 的升序对对象进行排序。
我该如何处理?
您可以在您的
compareTo
类上创建一个Staff
方法,它根据dep
和id
(当有平局时)进行比较:
int compareTo(Staff other) {
int res = dep.compareTo(other.dep);
return res != 0 ? res : id - other.id;
}
现在在您的
quickSort
代码中,只需使用此方法进行比较:
Staff pivot = staffs[i];
while (j > i)
{
while (staffs[i].compareTo(pivot) <= 0 && i < end && j > i) {
i++;
}
while (staffs[j].compareTo(pivot) >= 0 && j > start && j >= i) {
j--;
}
if (j > i)
swap(staffs, i, j);
}