разница с плавающей точкой []

#java

#java

Вопрос:

Мне интересно, какой наиболее эффективный способ найти абсолютное значение разницы между двумя массивами с плавающей точкой?

Является ли это следующим:

 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;
}
  

Ответ №1:

 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;
}
  

таким образом, нет повторной проверки границ внутри первого цикла, после чего остальная часть более длинного массива обрабатывается отдельно

Комментарии:

1. Я изменил ваш код, чтобы он компилировался, и это было быстрее, спасибо.

2. Вы можете исключить if и else и просто поместить туда оба цикла for — один из них будет циклом с нулевыми итерациями.

3. Кроме того, ваша diff = ... строка является лишней (и, вероятно, это то, что нужно было изменить, чтобы быть компилируемым, в дополнение к перемещению int n объявления перед циклом).