【发布时间】:2013-12-18 23:01:55
【问题描述】:
简单来说,我正在进行的项目的一部分是让我获取一个按降序排列的数组并添加一个元素,以便该数组保持有序。起初我以为只要将元素添加到数组中,然后在实现 Comparable 后进行排序就很简单,但后来发现禁止使用任何类型的排序算法;收藏品也是如此。关于如何从这里开始的想法,有什么提示吗?
前:
int[] x = [ 7, 6, 6, 5, 3, 2, 1 ]
add 4
[ 7, 6, 6, 5, 4, 3, 2, 1 ]
澄清说我并不是完全没有想法,只是有效率的想法。到目前为止我能推理的:
int[] bigger = new int[x.length];
int add = 4;
for (int i = 0; i < bigger.length; i++){
if ( add > x[i] && add < x[i+1]){
bigger[i] = x[i];
bigger[i+1] = add;
else{
bigger[i] = x[i];
}
}
我知道它会给x抛出一个IndexOutOfBounds错误,但我觉得一定有比这更简单的方法,对吧?
【问题讨论】:
-
是的。这是一个提示,
int[] newArray = new int[oldArray.length+1];,我建议你从mergeSort中查看merge。 -
最好使用数组列表
-
你能用
Arrays.sort(yourArray)吗? -
@Andrew 不幸的是没有。
-
这非常简单。扫描预排序的数组,直到找到一个小于您要插入的元素的元素。在该位置插入新元素,将找到的元素和所有内容滑动到它的“右侧”更右侧。如果找不到比要插入的元素少的元素,请在末尾添加新元素。如果使用上面的即用即复制方式,找到插入点后退出搜索循环,进入循环完成复制。