我是一个相当新的程序员,并且想创建一个以空数组开头的方法,并允许我调用它,以便以升序将值添加到该数组中。

例如:

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用作更简单的选项。

如果您不关心复杂性,只需对每个插入操作对数组进行排序。

10-08 13:59