Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.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_Arrays_Inversion - Fatal编程技术网

Java数组/反向初学者

Java数组/反向初学者,java,arrays,inversion,Java,Arrays,Inversion,我是java语言的新手,我有一个问题需要解决,我很确定我做得很好,但是测试人员仍然崩溃 if必须做的一个简要总结是“在数组a内,反转是数组内同时满足ia[j]的一对位置i和j”。在组合数学中,数组内的反转计数是“无序”程度的粗略度量“那是一个数组。如果一个数组按升序排序,则它有零个反转,而按逆序排序的n元素数组有n(n-1)/2个反转,这是可能的最大数。此方法应计算给定数组arr内的反转数,并返回该计数“ 以下是我所做/尝试的 import java.util.Arrays; public

我是java语言的新手,我有一个问题需要解决,我很确定我做得很好,但是测试人员仍然崩溃

if必须做的一个简要总结是“在数组a内,反转是数组内同时满足ia[j]的一对位置i和j”。在组合数学中,数组内的反转计数是“无序”程度的粗略度量“那是一个数组。如果一个数组按升序排序,则它有零个反转,而按逆序排序的n元素数组有n(n-1)/2个反转,这是可能的最大数。此方法应计算给定数组arr内的反转数,并返回该计数“

以下是我所做/尝试的


import java.util.Arrays;

public class P2J1
{
public static int countInversions(int[] arr)
{ 
    int inversions = 0; 
    for (int i = 0; i <= arr.length; i++){
        for (int j = i+1; j < i; j++){
           if (arr[i] > arr[j]){
               inversions++; 
           } 
       } 
   } 
  return inversions; 
} 
}

/// here's the tester 

    @Test public void testCountInversions() {
        Random rng = new Random(SEED);
        CRC32 check = new CRC32();
        for(int i = 0; i < 1000; i++) {
            int[] a = new int[i];
            for(int j = 0; j < i; j++) {
                a[j] = rng.nextInt(100000);
            }
            check.update(P2J1.countInversions(a));
        }
        assertEquals(1579619806L, check.getValue());
    }

导入java.util.array;
公共类P2J1
{
公共静态整数倒数(int[]arr)
{ 
整数倒数=0;
对于(int i=0;i arr[j]){
倒置++;
} 
} 
} 
收益倒置;
} 
}
///这是测试仪
@测试公共void testCountInversions(){
随机rng=新随机(种子);
CRC32检查=新的CRC32();
对于(int i=0;i<1000;i++){
int[]a=新的int[i];
对于(int j=0;j
在Java中,数组索引是从
0
arr.length-1
,您需要更改
i在Java中,数组索引是从
0
arr.length-1
,您需要更改
i“在大多数编程语言中”是不相关的:在这种编程语言中,Java是正确的在大多数编程语言中“是不相关的:在这种编程语言中,Java是正确的。您需要
i
。另外
(int j=i+1;j
将执行零次迭代,因为
j
开始时为false。您需要
i
。还需要
(int j=i+1;j
将执行零次迭代,因为
j
开始时为false。