我一直在研究 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] 删除。
我来说两句