假设我创建了一个大小为N的int
数组。然后我用排序的数字填充数组,直到索引x
,其中0 <= x < N-1
。如何找到索引x
?
这是数组的一个示例:{0,1,2,3,4,0,0,0,0,0}
,这是我生成数组的方式:
int[] arr = new int[10];
for (int i = 0; i < 5; i++) {
arr[i] = i;
}
这有什么Java语法吗?我具体谈到的是Array
而不是ArrayList
。
====的更新 ====
很抱歉这个混乱,上面的数组只是一个例子。假设给出了部分初始化的数组,这样我们就不知道它是如何生成的。同样,要清楚,数组也可以初始化为{0,0,0,1,2,6,7,0,0,0,0}
,其中最后0,0,0,0
部分是未初始化的部分,而第一个0,0,0
是由其他人故意编写的。
答案 0 :(得分:1)
你说你的数组已经排序了。因此,您可以在数组中搜索最大元素,然后使用Arrays.asList(arr).indexOf(largestElement);
int biggetsElement = arr[0];
for(int i=1; i < arr.length; i++){
if(arr[i] > biggestElement){
biggestElement = arr[i];
}
}
int index = Arrays.asList(arr).indexOf(biggestElement);
我不确定它是否适用于int元素,否则你可以使用Integer元素。
答案 1 :(得分:1)
您应该使用Integer类而不是int原始数据类型。了解使用Integer class
可以执行的更多操作Integer arr[] = new Integer[10];
每个元素初始化为null。现在你可以为它添加数字。
public int indexOfArray(Integer [] arr) {
int i=0;
while(arr[i]!=null) {
i++;
}
return i;
}
答案 2 :(得分:1)
指定不可能。如果“排序值”都是负数并以-1结束,例如:
,该怎么办?[-5,-4,-3,-2,-1, 0,0,0,0]
VS。 “排序值”,它们都是非正数但以0结尾(添加空格以强调初始排序数字的结尾)
[-5,-4,-3,-2,-1,0, 0,0,0]
之后没有办法告诉哪个0是“第一个”未分类的。
答案 3 :(得分:0)
假设您不知道x
是什么,并假设未初始化元素的仅值为0
,并且所有初始化元素都不能具有值{{1 (在你的情况下不是这样),那么你只需要对它进行线性搜索 -
0
答案 4 :(得分:0)
您可以使用:
int index = Arrays.binarySearch(theArray, 0);
条件:数组必须排序
修改强>
使用整数:
Integer[] theArray = {0, 0, 0, 1, 2, 4, 7, null, null, null};
int index = Arrays.binarySearch(theArray, null);
答案 5 :(得分:0)
创建for循环并输入条件,检查下一个元素是否已排序
代码:
int x
for(int i=0;i<arr.length;i++)
if(arr[i+1]-arr[i]!=1)
x=i;