如何为此进行输出?

典型的_nobody

我一直在研究 Java 并尝试使用数组。

这是我目前一直在尝试的。我的目标是在 arrElements 使用 indexArray 对 arrElements 进行排序后与预期的索引(即 indexArray)匹配时输出“匹配”,如果不匹配则输出“不匹配”。

我不知道如何做我打算做的输出。

作为一个例子,我想这样做:

输入:

5
10 5 20 25 15 
1 2 0 3 4

输出

"match"

如果您想检查两个数组是否包含相同的项目(以相同的顺序),您可以使用Arrays.equals(array1, array2)

文档说:

如果两个指定的 int 数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中所有对应的元素对相等,则认为两个数组相等。换句话说,如果两个数组以相同的顺序包含相同的元素,则它们是相等的。此外,如果两个数组引用都为空,则认为两个数组引用相等。

顺便提一句。也许 usingArrays.sort(array)对数组排序很有用。

文档说:

将指定的数组按数字升序排序。

实施说明:排序算法是 Vladimir Yaroslavskiy、Jon Bentley 和 Joshua Bloch 的 Dual-Pivot Quicksort。该算法在许多数据集上提供O(n log(n))性能,导致其他快速排序降低到二次性能,并且通常比传统的(单轴)快速排序实现更快。

所以,我建议的解决方案:

int arrElements[] = new int[n];
int indexArray[] = new int[n];
// here fill the arrays
// ...

// sort the arrays
Arrays.sort(arrElements);
Arrays.sort(indexArray);

// compare
if (Arrays.equals(arrElements, indexArray)) {
   System.out.println("Match");
} else {
   System.out.println("Not match");
}

我希望这对你有帮助。

编辑

如果您希望使用第二个中的索引对第一个数组进行排序:

int arrElements[] = new int[n];
int indexArray[] = new int[n];
// here fill the arrays
// ...

if (arrElements.length != indexArray.length) {
    System.out.println("Not match");
    return;
}
int sorted[] = new int[indexArray.length];
for (int i = 0; i < indexArray.length; i++) {
   if (indexArray[i] >= indexArray.length) {
       // indexArray[i] is not existing index in arrEelements
       System.out.println("Not match");
       return;
   }
   sorted[i] = arrElements[indexArray[i]];
}
System.out.println("Match");

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章