Может ли кто-нибудь помочь мне разобраться в этом методе подкачки, который является частью более крупной программы быстрого сортировки? Предполагается, что он принимает массив и два целых числа и свопит указательные позиции, обозначенные целыми числами.Метод swap для quicksort в java
private static <T extends Comparable<T>> int partition(T[] table, int first, int last) {
T pivot = table[first];
int up = first;
int down = last;
do {
while ((up < last) && (pivot.compareTo(table[up]) >= 0)) {
up++;
}
while (pivot.compareTo(table[down]) < 0) {
down--;
}
if (up < down) {
swap(table, up, down);
}
}
while (up < down);
swap(table, first, down);
return down;
}
Метод свопинга в настоящее время не определен, и я не уверен, как его заставить работать. Я пробовал написать метод:
void swap(T[] array, int a, int b) {
T temp = array[a];
array[a] = array[b];
array[b] = temp;
}
Однако я продолжаю получать ошибку, которую T не может решить для типа. Но когда я пытаюсь изменить тип на int, метод не работает там, где он вызывается выше.
Я также пробовал это, а мои вызовы метода свопа все еще говорят, что «метод swap (T [], int, int) не определен для типа QuickSort« У меня есть метод, определенный на том же уровне, что и private static> int partition (T [] table, int first, int last) –
Teej
Никогда не работает, на самом деле получается, что я просто не скомпилировался через некоторое время. Спасибо большое – Teej