我的程序有一个方法,允许用户搜索数组中的元素并返回其索引。由于某种原因,它会返回索引,如果数组是从未进行过排序的那样。
以下是方法:
public static ArrayList elementIndex(int search) {
ArrayList<Integer> index = new ArrayList<Integer>();
for (int i = 0; i<array.length; i++)
if (search == array[i]) {
index.add(i + 1);
}
return index;
}
我对数组进行排序的唯一一次是在之前的方法中,所以如果有事可做的话我会包含它:
public static int mostCommon(int size) {
int[] arraySorted = array;
int mostCommon = 0, mostCommonCount = 0, currentCount = 0;
Arrays.sort(arraySorted);
for (int i = 1; i < size; i++) {
if (arraySorted[i - 1] == arraySorted[i]) {
currentCount++;
if (currentCount > mostCommonCount) {
mostCommonCount = currentCount;
mostCommon = arraySorted[i];
}
}
else
currentCount = 0;
}
return mostCommon;
}
答案 0 :(得分:0)
arraySorted
(mostCommon
方法)是对(全局)变量array
的引用 - 都指向同一个对象。因此,一个阵列发生的事情也发生在另一个阵列上。即当你排序一个时,另一个(同一个数组)也会被排序。