バイナリ検索を使用して要素を挿入する場所を決定する際の重要なポイントは何ですか?挿入インデックスの決定
要素が存在するときにバイナリ検索を使用すると、そのインデックスが返されます。ここで
function arr() {
this.arr = [5, 6, 8];
this.insert = function(element) {
var low = 0;
var high = this.arr.length - 1;
while (low <= high) {
var mid = parseInt((low + high)/2);
if (element == this.arr[mid]) {
return mid;
} else if (element > this.arr[mid]) {
low = mid + 1;
} else {
high = mid - 1
}
}
return -1
}
}
var vector = new arr();
var x = vector.insert(6); // return 1
alert(x)
私は、インデックス1に要素を挿入するために、スプライスを使用しますが、どのような場合
var x = vector.insert(7);
7やっていることは、アレイに存在していないが、2番目のインデックスに挿入されるべきことができます。
どうすれば決定できますか?
"7は配列に存在しませんが、2番目のインデックスに挿入する必要があります。あなたはバイナリ検索のためのコードを貼り付けましたか?正しいインデックスを返すことさえあります。あなたが何を決定したいかはわかりません。 –
要素が配列内に存在する場合には、正しいインデックスを返しています。私はlower_boundを使用してC++に挿入するような挿入のソートを実現したい – Darlyn
"-1"の代わりにmidを返すようにしてください –