Как часть моего алгоритма QuickSort, я пытаюсь найти медианное значение у Arraylist с учетом индекса первого, среднего и последнего элементов. Я использовал несколько операторов if/else как способ их поиска, но это неправильно, и логика довольно запутана.Поиск медианы с учетом индекса из трех элементов
Примечание: Сортировка массива не является вариантом.
public static int findMedian(ArrayList <Integer> A, int first, int mid, int last) {
if(first == mid || first == last || last == mid) {
return first;
}
if(A.get(first) >= A.get(last)) {
if(A.get(first) <= A.get(mid)) {
return first;
}
else if(A.get(last) >= A.get(mid)) {
return last;
}
return mid;
}
else {
if(A.get(first) > A.get(mid)) {
return first;
}
else if(A.get(mid) > A.get(last)) {
return last;
}
return mid;
}
}
Я нашел некоторые методы решения случая, когда три значения различно. Тем не менее, я должен учитывать это, поскольку массивы, которые я создал, имеют случайные значения. – KC32