Java:如何查找部分初始化的排序数组的最后一个元素的索引

时间:2014-11-04 17:47:06

标签: java arrays

假设我创建了一个大小为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是由其他人故意编写的。

6 个答案:

答案 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;