「JavaScriptのメソッド」のバイナリ思考とコードの実装を探して

バイナリ思考を探します

  • まず、その要素がターゲット要素(検索したい要素すなわち)であることを起こる場合は、検索処理が終了すると、注文した配列の要素の途中からそうでない場合は、次のステップを検索を開始します。
  • ターゲット要素がアレイ・ルックアップ・エレメントよりも大きいか小さい中間領域の半分に、中間要素より大きいまたは小さい場合、動作の最初のステップを繰り返します。
  • 配列内のステップが空の場合、ターゲット要素を見つけることができませんでした

コードの実装

  • 非再帰
// 非递归算法
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

おすすめ

転載: www.cnblogs.com/yuanchao-blog/p/10991583.html
おすすめ