我的程序无法正确计数MergeSort数组中的反转

时间:2019-06-30 10:00:17

标签: java mergesort

下面是我在Java上编写的代码,用于从文本文件中读取100000个整数并使用合并排序对其进行排序。

问题:

程序无法正确计算倒数,我不知道问题出在哪里?

我在此数组long [] arrayB = {4,3,2,1,1,8,7,5,3,6}上测试我的代码。它显示了15的20个反转。

vertex_dendrogram = friend_graph_based_on_votes.community_fastgreedy()
print(vertex_dendrogram)

//ПолучимотсортированныймассивметодомСлияния

    BufferedReader reader = new BufferedReader(new FileReader("C:\\Users\\Nick\\Desktop\\ArrayInt.txt"));
    long[] arrayA = new long[100_000];
    int i = 0;
    while (reader.readLine() != (null)) {
        arrayA[i] = Long.parseLong(reader.readLine());
        i++;
    }
    reader.close();
    long[] arrayB = {4, 3, 2, 1,  8, 7, 5, 3, 6 };
    long invb = getMergeSort(arrayB);
    long testInvB = simpleInvCount(arrayB);
    System.out.println(invb);
    System.out.println(testInvB);
    System.out.println( (float) testInvB / invb);

}
public static long simpleInvCount(long [] A){
    long invCount = 0;
    for (int i = 0; i < A.length; i++){
        for (int j = 0; j < i; j++){
            if (A[i] < A[j])
                invCount++;
        }
    }
    return invCount;
}

}

在此数组上,long [] arrayB = {4,3,2,1,8,8,7,5,3,6}我希望输出为15,但实际输出为20。

0 个答案:

没有答案