将元素添加到数组的中间(数据结构)

时间:2015-02-26 17:12:27

标签: java arrays sorting generics

我在为数据结构类的数组结构实现add方法时遇到了麻烦,而且我无法找到一种方法来解决如何正确执行此操作。我知道这是一种处理数据的不切实际的方法,但是嘿数据结构。

说明:

  

add方法确保此set包含指定的元素。   不允许重复或空值。该方法返回   如果修改了该集合(即添加了元素),则返回true   除此以外。如果数组已满,则必须“调整”数组两次   一样大。注意对泛型类型参数T的约束   ArraySet类确保值的自然顺序   存储在ArraySet中。您必须维护内部数组   始终提升自然秩序。添加的时间复杂度   方法必须是O(N),其中N是集合中元素的数量。

我们只能使用Array和Iterator类!请不要使用arraylists给出答案。

我的Psudocode是:

  

检查元素是否存在,检查数组是否已满,如果是双倍大小,   比较元素以找到我们可以维持自然顺序的索引   并插入元素或找到副本并退出,复制数组   自上而下并与插入的元素和底部组合。

实际代码:

//Given Fields
T[] elements;
int size;

//Add Method
public boolean add(T element) {
        if (element != null) {
            int index = -1;
            int last_compare = -1;
            for (int i = 0; i < size; i++) {
                int compare = elements[i].compareTo(element);
                if (compare > 0 && last_compare < 0) { //larger element, last element was smaller. 
                    if (isFull()) {
                        resize(elements.length * 2);
                    }
                    index = i;
                    break;
                } else if (compare == 0) {
                    return false;
                }
                last_compare = compare;
            }

            T[] temp = null;
            //Need to copy the array here

        } else {
            return false;
        }
    }

我不知道在保持O(N)时间复杂度的同时如何正确插入。

有什么想法吗?

0 个答案:

没有答案