我是一个相当新的程序员,并且想创建一个以空数组开头的方法,并允许我调用它,以便以升序将值添加到该数组中。
例如:
insertInOrder(5);
insertInOrder(3);
insertInOrder(7);
insertInOrder(9);
insertInOrder(12);
应该返回一个带有值的数组:
0:3
1:5
2:7
3:9
4:12
我不使用Java预先构建的方法(例如“ Array.sort”)就可以做到这一点的任何技巧将不胜感激。谢谢!
下面是我对这段代码的尝试;但是,我可以实现的就是在数组的末尾添加一个值(如果它是最大的数字)。
例如:
insertInOrder(1);
insertInOrder(4);
insertInOrder(9);
insertInOrder(17);
insertInOrder(26);
可以,但是此代码不能:
insertInOrder(2);
insertInOrder(4);
insertInOrder(1);
insertInOrder(3);
insertInOrder(19);
码:
public class InOrder
{
int[] arry = new int[20];
int target = -1;
int elements = 0;
public static void main(String[] args)
{
InOrder i = new InOrder();
i.insertInOrder(6);
i.insertInOrder(7);
i.insertInOrder(12);
i.insertInOrder(17);
i.insertInOrder(19);
i.insertInOrder(28);
for(int k = 0; k < 20; k++)
{
System.out.println(i.arry[k]);
}
}
public void insertInOrder(int n)
{
if (elements == 0)
{
arry[0] = n;
elements++;
}
else
{
for (int i = 0; i < elements; i++)
{
if (n > arry[i])
{
target = i;
}
}
if (target == -1)
{
target = 0;
}
if (n > arry[target])
{
for (int x = target; x < elements; x++)
{
if(x + 1 == elements)
{
arry[x + 1] = n;
elements++;
break;
}
}
}
}
}
最佳答案
我相信,如果要具有很好的插入复杂性并按排序顺序存储元素,则需要一个更复杂的数据结构。像self-balancing binary search tree这样的RB tree将起作用,您也可以将skip list用作更简单的选项。
如果您不关心复杂性,只需对每个插入操作对数组进行排序。