【发布时间】:2015-09-14 18:09:09
【问题描述】:
作为我的快速排序算法的一部分,我试图从给定第一个、中间和最后一个元素的索引的 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;
}
}
【问题讨论】:
-
我找到了一些方法来解决三个值都不同的情况。但是,我必须考虑到这一点,因为我生成的数组具有随机值。