如果新添加的值低于现有值,我需要一个循环来帮助移动数组的元素,因此在输入新值时对数组进行排序。
数组以空开头。
我尝试了几个循环,但它们似乎不适用于我的情况,因为它们是用于已经满的数组的循环。
以下是我目前的代码。
if(index < 0)
index = -(index + 1);
if(arr[index] > key)
for(int i = 0; i < count -1; i++) {
arr[index + i] = arr[index + i + 1];
}
arr[index] = key;
索引来自二元搜索。
例如,如果我先输入80,则需要arr[0]
的插槽。然后我输入45,它也将占用arr[0]
。
由于45,key,小于现有的arr [0](80),80是向上移动索引。
答案 0 :(得分:2)
您可能需要循环以便执行以下操作:
for (int i = count; i > index; i--) {
arr[i] = arr[i - 1]; // shifts the elements to the one place right
}
arr[index] = key; // add the key to the given index
注意:count是数组中当前元素的数量,它小于arr.length
答案 1 :(得分:1)
你可以选择这样的东西:
首先,你需要
然后它很简单:
答案 2 :(得分:0)
看起来你正在尝试将数组元素向错误的方向移动。
鉴于index = 0
和i = 0
,您最终会得到:
arr[0] = arr[1];
当你可能想要反过来时。