Java 如何找到在排序数组中插入元素的正确位置?
我必须用Java编写一个程序来创建一个按降序排列的数组。当我尝试插入10,3时,它是可以的,但是当我插入10,3,8时,结果是10,8,0。由于某种原因,0出现在末尾。另外,当我尝试输入负数如-2时,结果变成-2,8,0。有人能帮忙吗?另外,气泡排序是这种插入的正确方法吗?(对不起,我的英语太差了,这是我第一次来这里。)。谢谢你抽出时间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
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+元素。插入索引是结果之前的位置。然后移动数组并插入元素。我看不出冒泡排序与它有什么关系。因为您是说必须按降序创建排序数组。