我正在尝试创建一种方法,该方法以二进制形式插入然后对元素进行排序。
我遇到的问题是我的代码没有正确插入数据,这意味着输出似乎根本没有顺序。
该列表没有组织,数据按插入的顺序添加。
现在,有两个问题,我在这里做错了什么?以及如何解决这个问题?
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++;
}