我有一个代码片段,它在数组中找到中位数,然后对该数组进行排序取决于与中位数的接近程度(从最小到最大),但我无法理解这些东西是如何工作的
public static Integer[] sort(Integer[] array)
{
Arrays.sort(array);
final double median;
if (array.length % 2 == 0)
median = ((double)array[array.length/2-1]+ (double)array[array.length/2])/2;
else
median = array [array.length/2];
Comparator<Integer> compareToMedian= new Comparator<Integer>()
{
@Override
public int compare(Integer o1, Integer o2)
{
double value = Math.abs(o1 - median) - Math.abs(o2 - median);
if (value == 0)
value = o1 - o2;
return (int)value;
}
};
Arrays.sort(array, compareToMedian);
return array;
}
我真正感到困惑的是,在这种特殊情况下,确切的价值意味着什么。它只是将结果排序从最小到最大吗?就像我result
在一种情况下等于-5,在另一种情况下等于-2并且最终变为-5,-2,3?并对阵列进行排序?
答案 0 :(得分:1)
0如果两者相等
+ ve如果第一个值更大
-ve如果第二个值更大
compareTo(5,5)返回0
compareTo(6,5)返回任何正数
compareTo(5,6)返回任何负数
{{1}}