決定使用二分搜索插入元素的位置的關鍵點是什麼?確定插入索引
元素存在時使用二進制搜索返回其索引。
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不存在於陣列中的,但應該在二路索引被插入。
我怎麼能確定?
「7不存在於數組中,但應該插入第2個索引,我怎麼能確定這個?你已經粘貼了二進制搜索的代碼?它甚至會返回正確的索引,不知道你想確定什麼。 –
當元素存在於數組中時返回正確的索引。我想實現插入類似於使用lower_bound和插入在c + + – Darlyn
嘗試返回中間而不是「-1」 –