🔍 Binary Search Algorithm - 詳細解析
計算量分析
時間計算量: O(log n) - 各ステップで検索範囲を半分に削減
空間計算量: O(1) - 定数の追加メモリのみ使用
1. 初期化
left = 0
right = n-1
2. 中点計算
mid = left + ⌊(right-left)/2⌋
3. 比較
nums[mid] と target を比較
4. 範囲更新
条件に応じて left または right を更新
📊 実例による段階的解析
🎯 アルゴリズムの核心理解
なぜ O(log n) なのか?
各ステップで検索範囲を半分に削減するため、最大でも log₂(n)
回の比較で完了します。 例: n=1000の場合、最大10回の比較で結果が得られます。
挿入位置の判定
ターゲットが見つからない場合、leftポインターが自然に正しい挿入位置を指します。
これは、leftが常に「ターゲット以上の最小要素の位置」を維持するためです。