バイナリ思考を探します
- まず、その要素がターゲット要素(検索したい要素すなわち)であることを起こる場合は、検索処理が終了すると、注文した配列の要素の途中からそうでない場合は、次のステップを検索を開始します。
- ターゲット要素がアレイ・ルックアップ・エレメントよりも大きいか小さい中間領域の半分に、中間要素より大きいまたは小さい場合、動作の最初のステップを繰り返します。
- 配列内のステップが空の場合、ターゲット要素を見つけることができませんでした
コードの実装
// 非递归算法
function binary_search(arr, key) {
let low = 0;
let high = arr.length - 1;
while(low <= high){
let mid = parseInt((high + low) / 2);
if(key === arr[mid]){
return mid;
}else if(key > arr[mid]){
low = mid + 1;
}else if(key < arr[mid]){
high = mid -1;
}else{
return -1;
}
}
}
// 递归算法
function binary_search(arr,low, high, key) {
if (low > high){
return -1;
}
let mid = parseInt((high + low) / 2);
if(arr[mid] === key){
return mid;
}else if (arr[mid] > key){
high = mid - 1;
return binary_search(arr, low, high, key);
}else if (arr[mid] < key){
low = mid + 1;
return binary_search(arr, low, high, key);
}
};
オリジナルリンク:https://github.com/qianbin01/frontend_train#sort