Java 如何找到在排序数组中插入元素的正确位置?

Java 如何找到在排序数组中插入元素的正确位置?,java,arrays,sorting,Java,Arrays,Sorting,我必须用Java编写一个程序来创建一个按降序排列的数组。当我尝试插入10,3时,它是可以的,但是当我插入10,3,8时,结果是10,8,0。由于某种原因,0出现在末尾。另外,当我尝试输入负数如-2时,结果变成-2,8,0。有人能帮忙吗?另外,气泡排序是这种插入的正确方法吗?(对不起,我的英语太差了,这是我第一次来这里。)。谢谢你抽出时间 private int searchPosition(int a) { int position = 0; f

我必须用Java编写一个程序来创建一个按降序排列的数组。当我尝试插入10,3时,它是可以的,但是当我插入10,3,8时,结果是10,8,0。由于某种原因,0出现在末尾。另外,当我尝试输入负数如-2时,结果变成-2,8,0。有人能帮忙吗?另外,气泡排序是这种插入的正确方法吗?(对不起,我的英语太差了,这是我第一次来这里。)。谢谢你抽出时间

    private int searchPosition(int a)
    {
        int position = 0;

        for (int i = 0; i < array.length(); i++)
        {
            if(array[i] != a)
            {
                if((array[i] > a) && (array[i + 1] < a))
                {
                    position = i + 1;
                }
            }
            else
            {
                position = i;
            }
        }

        return position;
    }

    public boolean insert(int a)
    {
        int position;
        boolean exists;
        int temp;

        if (size == capacity)
        {
            System.out.println("The array is full.");
            return false;
        }
        else
        {
            exists = //here i call a method to make sure the element to insert doesn't exist in the array

            if (exists == false)
            {
                //Bubble Sort in desceding order
                for (int i = 0; i < array.length(); i++)
                {
                    for (int j=0; j < array.length() - i; j++)
                    {
                        if (array[j] < array[j + 1])
                        {
                            temp = array[j + 1];
                            array[j + 1] = array[j];
                            array[j] = temp;
                        }
                    }
                }
                position = searchPosition(a);
                //move elements one position to the right
                for (int i = array.length(); i < position; i--)
                {
                    array[i] = array[i - 1];
                }
                array[position] = a;
                //place a in the free position
                size++;
                return true;
            }
            else
            {
                System.out.println("The element" + a + " already exists in the array.");
                return false;
            }
        }
    }
private int searchPosition(int a)
{
int位置=0;
对于(int i=0;ia)和&(数组[i+1]
您可以使用
break
语句来执行此操作,当值小于数组中的值时,退出循环并使用此索引

int value = 8;
for(int i = 0; i < array.length; i++) {
    if(array[i] < value) {
        break;
    }
}

for(int j = array.length; j > i; j--) {
    a[j] = a[j -1];
}
a[j] = value;
size++;
int值=8;
for(int i=0;ii;j--){
a[j]=a[j-1];
}
a[j]=值;
大小++;

您可以使用
break
语句来执行此操作,当值小于数组中的值时,退出循环并使用此索引

int value = 8;
for(int i = 0; i < array.length; i++) {
    if(array[i] < value) {
        break;
    }
}

for(int j = array.length; j > i; j--) {
    a[j] = a[j -1];
}
a[j] = value;
size++;
int值=8;
for(int i=0;ii;j--){
a[j]=a[j-1];
}
a[j]=值;
大小++;

您可以使用
break
语句来执行此操作,当值小于数组中的值时,退出循环并使用此索引

int value = 8;
for(int i = 0; i < array.length; i++) {
    if(array[i] < value) {
        break;
    }
}

for(int j = array.length; j > i; j--) {
    a[j] = a[j -1];
}
a[j] = value;
size++;
int值=8;
for(int i=0;ii;j--){
a[j]=a[j-1];
}
a[j]=值;
大小++;

您可以使用
break
语句来执行此操作,当值小于数组中的值时,退出循环并使用此索引

int value = 8;
for(int i = 0; i < array.length; i++) {
    if(array[i] < value) {
        break;
    }
}

for(int j = array.length; j > i; j--) {
    a[j] = a[j -1];
}
a[j] = value;
size++;
int值=8;
for(int i=0;ii;j--){
a[j]=a[j-1];
}
a[j]=值;
大小++;

附加调试器,单步执行代码。这就是你学习的方式。我调试了它,结果是10 3插入8数组是:10 8 0二进制搜索数组中的1+元素。插入索引是结果之前的位置。然后移动数组并插入元素。我看不出冒泡排序与它有什么关系。既然您是说必须按降序创建排序数组,请附加调试器,逐步完成代码。这就是你学习的方式。我调试了它,结果是10 3插入8数组是:10 8 0二进制搜索数组中的1+元素。插入索引是结果之前的位置。然后移动数组并插入元素。我看不出冒泡排序与它有什么关系。既然您是说必须按降序创建排序数组,请附加调试器,逐步完成代码。这就是你学习的方式。我调试了它,结果是10 3插入8数组是:10 8 0二进制搜索数组中的1+元素。插入索引是结果之前的位置。然后移动数组并插入元素。我看不出冒泡排序与它有什么关系。既然您是说必须按降序创建排序数组,请附加调试器,逐步完成代码。这就是你学习的方式。我调试了它,结果是10 3插入8数组是:10 8 0二进制搜索数组中的1+元素。插入索引是结果之前的位置。然后移动数组并插入元素。我看不出冒泡排序与它有什么关系。因为您是说必须按降序创建排序数组。