我正在尝试创建一种方法,该方法以二进制形式插入元素然后对其进行排序。
我遇到的问题是我的代码没有正确插入数据,这意味着输出看起来根本没有顺序。
列表没有组织,数据按插入顺序添加。
现在,有 2 个问题,我在这里做错了什么?以及如何解决这个问题?
public void insertBinarySearch(long value) // put element into array
{
int j = 0;
int lower = 0;
int upper = elems-1;
int cur = 0;
while (cur < elems)
{
cur = (lower + upper ) / 2;
if(a[cur] < value)
{
j = cur + 1;
break;
}
else if(a[cur] > value)
{
j = cur;
break;
}
else
{
if(a[cur] < value)
lower = cur + 1;
else
upper = cur - 1;
}
}
for(int k = elems; k > j; k--)
a[k] = a[k-1];
a[j] = value;
elems++;
}
最佳答案
while (lower <= upper)
{
curIn = (lower + upper ) / 2;
if(a[curIn] < value)
lower = cur + 1;
else if(a[curIn] > value)
upper = cur - 1;
else if (a[curIn] == value)
break;
}
if(a[curIn] <= value)
j = curIn + 1;
else j = curIn;
应该可以。
关于java - 练习使用二进制搜索将数据插入数组,问题很少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12658324/