演習課題「二分探索で位置を求める」
整数n,xと長さnの昇順にソートされた配列aが与えられるので、この配列に含まれるxの添字を出力してください。ただし、xが含まれていない場合は-1を出力してください。
入出力用のコードがすでに用意されているので、関数binary_searchにコードを書き足してプログラムを完成させてください。
期待する出力値
2
#01:二分探索
このチャプターでは、さまざまな処理を高速化するアルゴリズムである二分探索について学習します。
def binary_search(n, x, a):
    # 変数left,rightをそれぞれ0とn-1で初期化
    left, right = 0, n-1
    # rightがleft以上である間
    while right >= left:
        # 変数midに(left+right)/2を代入
        mid = (left + right) // 2
        # もしa[mid]がxに等しいなら
        if a[mid] == x:
            # trueを返す
            return True
        # もしa[mid]がxより大きいなら
        elif a[mid] > x:
            # rightにmid-1を代入
            right = mid - 1
        # そうでなければ
        else:
            # leftにmid+1を代入
            left = mid + 1
    # falseを返す
    return False
n, x = map(int, input().split())
a = [int(x) for x in input().split()]
print("Yes" if binary_search(n, x, a) else "No")
3 1
1 3 8
3 2
1 3 8