要素をバイナリ形式で挿入して並べ替えるメソッドを作成しようとしています。
私のコードがデータを正しく挿入しないという私が経験している問題は、出力がまったく正しいように見えないことを意味します。
リストは整理されておらず、挿入された順にデータが追加されます。
さて、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++;
}