如何将整数元素插入到排序数组中

时间:2014-04-12 23:19:45

标签: java arrays insert

我需要创建一个方法,将整数插入到整数的排序数组中。 我已经完成了这个方法但不是整数而是字符串。现在我的整数有问题。

我的字符串数组方法是:

    public int inserisci(String s) throws IllegalStateException {
    if(numElementi == elementi.length)
        throw new IllegalStateException("Full array.");     
    int pos = ricercaBinaria(s);
    if(pos > -1) 
        return -1;
    if(elementi[-(pos + 1)] != null) {
           for(int i = numElementi; i >= -(pos + 1); i--)
            elementi[i + 1] = elementi[i];
    }
    elementi[-(pos + 1)] = s;
    numElementi++;
    return -(pos + 1);
}

对于我写这个字符串的字符串数组:

    public int insert(int x) throws IllegalStateException {
    if(numElements == elements.length)
        throw new IllegalStateException("Full array.");     
    int pos = binarySearch(x);
    if(pos > -1) 
        return -1;
    if(**elements[-(pos + 1)] != null**) {
           for(int i = numElements; i >= -(pos + 1); i--)
              elements[i + 1] = elements[i];
    }
    elements[-(pos + 1)] = x;
    numElements++;
    return -(pos + 1);
}

但粗体部分(元素[ - (pos + 1)]!= null )不正确。我怎样才能更换它? 感谢

3 个答案:

答案 0 :(得分:1)

  1. 如果你在List和集合中使用java的构建,那么它必须比你当前的方法更快
  2. 语法如 - (pos + 1)它的可读性和重新排列数组的倒退方式非常糟糕,如果你要使用这个方法然后找到要插入的位置,比如索引'i'哪个目前正在使用 - 它们在插入i之前移动所有其他元素并且等于i。 (我认为这必须是个人发展或学校作业,因为你不想在公司的Java代码上做这个逻辑)

答案 1 :(得分:0)

试试这个。使用 ArrayUtils#add(array,index,value) 方法在索引2处插入一个新值。

注意:如果您处于学习阶段,我建议您,暂时不要使用它。

int[] arr = { 0, 2, 3, 5, 6, 7 };

System.out.println("Previous size:" + arr.length);
arr = org.apache.commons.lang.ArrayUtils.add(arr, 2, 1);
System.out.println("New Size:" + arr.length);
System.out.println("inserted value:" + arr[2]);

输出:

Previous size:6
New Size:7
inserted value:1

答案 2 :(得分:0)

只需使用Java的List类作为Collections框架的一部分。它比你在这里实现排序列表更有效,更可靠,更实用。

如果它是数组的一部分,则将所有数据添加到列表中:java.util.Array #AsList(T [] t)(如果类型T为int,则返回List) 要对此数组进行排序,因为int是基本类型,使用<和> java.util.Collections中#排序(yourList)

要了解List在列表中使用或可以使用的所有方法,请阅读这两个链接。