我必须用Java创建一个程序来按降序创建一个排序数组。当我尝试插入10,3时没关系,但是当我插入10,3,8时,结果是10,8,0。由于某种原因,0出现在最后。此外,当我尝试输入负数-2时,结果变为-2,8,8。有人能帮忙吗?此外,冒泡排序是这种插入的正确方法吗? (对不起我的英文,这是我第一次来这里)。谢谢你的时间。
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;
}
}
}
答案 0 :(得分:3)
您可以使用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++;