【发布时间】:2018-03-07 07:30:00
【问题描述】:
我正在尝试在数组(长类型)中找到中间索引 我解决的问题专门要求很长时间才能返回,所以我无法更改签名 我想在我的快速排序代码中找到枢轴点,但我收到一个错误“可能有损从 long 到 int 的转换” 我明白分割时可能会丢失一些信息,但我想绕过它 这是包含错误的代码:
public static long partition(long[] array, long left, long right){
long i = left, j = right;
long tmp;
long pivot = array[(left + right) / 2]; // <-----ERROR HERE <------
while(i <= j) {
while(array[i] < pivot){
i--;
}
while(array[j] > pivot) {
j--;
}
if(i <= j) {
tmp =array[i];
array[i] = array[j];
array[j] = tmp;
i++;
j--;
}
}
return i;
}
【问题讨论】:
-
一个数组的索引类型为
int -
尝试数组[(left + right) / 2L];
-
@lakshman 没有区别,2 将经历二进制数字提升到 long 已经。