通过排序将数字添加到ArrayList

时间:2015-11-29 20:11:46

标签: java sorting arraylist

包含将传递addEventToTimeline的方法Event。将element添加到ArrayList个事件时,应将其放在列表中的正确位置。事件中的元素应始终按时间顺序排列。

使用与我们昨天使用的类似的逻辑和代码来添加Event 正确的位置在列表中。 (Event使用compareTo进行比较。)

到目前为止,我的代码看起来像这样。我知道这是错的,但我不知道从哪里开始。

public void addEventToTimeline(Event a){
    for(int i = 0; i <events.size(); i++){
        if(a.compareTo(events.get(i))<0);
        events.add(i+1, events.get(i));
        events.set(i, a);


    }

}

}

1 个答案:

答案 0 :(得分:0)

您是否被迫使用ArrayList?我会用树来解决这个问题。以下是使用ArrayList解决方案应该做的事情:

  1. 找到新事件的正确位置(如果arrayList未排序则为O(n),如果排序则为Log(n) - 使用二进制搜索
  2. 将事件置于其位置,并将所有后续事件向右移动一个位置(O(n))
  3. 我会为此使用更高级的数据结构。例如,如果你想要的只是min事件,那么每次使用heap

    如果您需要全球订单,请使用BST,甚至更好的red black tree

    This post on StackExchange也很有用