Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用区间法降低圈复杂度_Java_Cyclomatic Complexity - Fatal编程技术网

Java 用区间法降低圈复杂度

Java 用区间法降低圈复杂度,java,cyclomatic-complexity,Java,Cyclomatic Complexity,下面的java代码给出了相当高的圈复杂度。我想找到一种方法来适当减少它。我最好怎么做 需要明确的是,代码根据值是否在两个限制之间获得值的相应结果。值本身可以是-10000到+200000之间的任何整数。问题主要在于小于或等于运算符,这妨碍了库的简单使用。两个极限之间的范围可能不同,我们所说的范围是100000,一个例子是你可能正在寻找的区间[ 来自Wikipedia;大O表示法的时间复杂性: | Average | Worst case ---------------------

下面的java代码给出了相当高的圈复杂度。我想找到一种方法来适当减少它。我最好怎么做


需要明确的是,代码根据值是否在两个限制之间获得值的相应结果。值本身可以是-10000到+200000之间的任何整数。问题主要在于小于或等于运算符,这妨碍了库的简单使用。两个极限之间的范围可能不同,我们所说的范围是100000,一个例子是你可能正在寻找的区间[

来自Wikipedia;大O表示法的时间复杂性:

       | Average  | Worst case
----------------------------------
Space  | O(n)     | O(n)
Search | O(log n) | O(n)
Insert | O(log n) | O(n)
Delete | O(log n) | O(n)

如果您一开始就创建一次BST并简单地重复使用它,这将允许您加快搜索速度。如果您要向我们提供有关数据传播的更多信息,则可以使用其他技术对其进行改进并测试每个限制:

private int function getBasedOnInterval(int value) {
    int result = RESULT15;

    // consider LIMITS as an array containing 0, LIMIT1...LIMIT13
    // consider RESULTS as an array containing RESULT1...RESULT14
    for(int index = 0; index < LIMITS.length; index++) {
        if(value <= LIMITS[index]) {
            result = RESULTS[index];
            breaks;
        }
    }

    return result;
}

你能给出一些示例值吗?LIMITxx是以设定的间隔吗?它们是随机的吗?如此简单,人们可能会想为什么我没有想到它。事实上,问题主要在于else分支,它没有限制。用它打开实际上解决了问题。
private int function getBasedOnInterval(int value) {
    int result = RESULT15;

    // consider LIMITS as an array containing 0, LIMIT1...LIMIT13
    // consider RESULTS as an array containing RESULT1...RESULT14
    for(int index = 0; index < LIMITS.length; index++) {
        if(value <= LIMITS[index]) {
            result = RESULTS[index];
            breaks;
        }
    }

    return result;
}