我想知道查找两个 float 组之间差异的绝对值的最有效方法是什么?
是否是以下内容:
private float absDifference(float[] vector1, float[] vector2) {
float difference=0;
int len=Math.max(vector1.length, vector2.length);
for(int n=0;n<len;n++){
float diff=0;
if(n<vector1.length){
diff+=vector1[n];
}
if(n<vector2.length){
diff-=vector2[n];
}
difference+=Math.abs(diff);
}
return difference;
}
最佳答案
private float absDifference(float[] vector1, float[] vector2) {
float difference=0;
int len=Math.min(vector1.length, vector2.length);
for(int n=0;n<len;n++){
diff+=vector1[n]-vector2[n];
difference+=Math.abs(vector1[n]-vector2[n]);
}
if(vector1.length > vector2.length){
for(;n<vector1.length;n++){
difference+=Math.abs(vector1[n]);
}
}else{
for(;n<vector2.length;n++){
difference+=Math.abs(vector2[n]);
}
}
return difference;
}
这样,在单独处理较长数组的其余部分之后,第一个循环内就不会重复进行边界检查
关于java - float[] 差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925031/