Итак, у меня есть этот код, чтобы быстро отсортировать список учащихся по классам.Добавление дополнительных критериев сортировки в быстрый сортировки в java
public static void quickSort(Student[] school){
quickSort(school, 0, school.length - 1); // quicksort all the elements in the array
}
private static void quickSort(Student[] school, int start, int end) {
int i = start; // index of left-to-right scan
int k = end; // index of right-to-left scan
if (end - start >= 1) // check that there are at least two elements to sort
{
Student pivot = school[start]; // set the pivot as the first element in the partition
while (k > i) // while the scan indices from left and right have not met,
{
while (school[i].getStudentGrade() <= pivot.getStudentGrade() && i <= end && k > i) // from the left, look for the first
{
i++;
// element greater than the pivot
}
while (school[k].getStudentGrade() > pivot.getStudentGrade() && k >= start && k >= i) // from the right, look for the first
{
k--; // element not greater than the pivot
}
if (k > i) // if the left seekindex is still smaller than
{
swap(school, i, k); // the right index, swap the corresponding elements
}
}
swap(school, start, k); // after the indices have crossed, swap the last element in
// the left partition with the pivot
quickSort(school, start, k - 1); // quicksort the left partition
quickSort(school, k + 1, end); // quicksort the right partition
} else // if there is only one element in the partition, do not do any sorting
{
return; // the array is sorted, so exit
}
}
//Swap 2 index values in array
private static void swap(Student[] school, int index1, int index2)
{
Student temp = school[index1];
school[index1] = school[index2];
school[index2] = temp;
}
Я только не могу понять, как добавить дополнительные критерии сортировки, чтобы студенты с теми же сортами сортируются на основе там числа студентов, которые я получаю с помощью student.getStudentNumber.
Одним из способов является абстрактным ваше сравнение в отдельный метод. Таким образом, ваш алгоритм сортировки не должен изменяться только потому, что вы меняете критерии сортировки. Один типичный подход заключается в том, чтобы метод сортировки возвращал один из значений {-1,0,1}, в зависимости от того, является ли первый аргумент меньше, равным или большим, чем второй аргумент. –
@ AndyThomas: Это именно то решение. Добавьте это как ответ, например. Я подниму его. –
Спасибо за помощь! –