【发布时间】:2010-09-19 15:23:30
【问题描述】:
这是一个整数数组。 它是这样创建的: 没有元素重复。每次添加一个元素时,它的编号都是下一个可用的整数,从 0 开始。这样,如果您连续添加 6 个元素,它们将依次为 0、1、2、3、4、5。如果删除一个元素,数组缩小,并且在两个元素之间留下一个“洞”,它们不再连续,因为那个间隙:0、1、3、4、5。那么问题来了:如果你添加一个新元素,它被添加到末尾,但具有下一个可用整数。所以,数组现在是 0, 1, 3, 4, 5, 2。它需要排序,所以 2 可以占据它在 1 和 3 之间的位置。 最好的方法是什么?我想了几种方法。该列表几乎是有序的,并且它具有这样的特性:当它有序时,每个元素都等于或大于它在数组中的索引。我目前正在做一个冒泡排序(别笑),我认为快速排序是多余的,我不想递归或使用临时数组,我不想更改 add-element 方法(它将元素添加到end),所以必须在添加元素后立即排序(所以只有最后一个元素不合适)
【问题讨论】: