/ / BinarySearch - 座標間の距離 - アルゴリズム、バイナリ検索

BinarySearch - アルゴリズム間、バイナリサーチ間の距離

並べ替えられた配列でNより大きい隣接番号間の距離があるかどうかを確認するには、2分検索を使用する必要がありますか。例えば:

Input: 2 5 8 11 16
Distance: 4

それで私達は隣人の間にそのような距離があるという答えを得るべきです。 (11〜16)

編集:なぜ私はこれを二分探索でやろうと思っているのかもっと明確にしましょう。
INPUT配列がソートされていないとします。例:

Input: 11 8 2 16 5

それから、あなたは隣人がどれであるかを見るために配列をソートするべきです。それでは、ソートされたリストを作成した後では、バイナリサーチを少し変更して距離を見つけるのが最善の方法ではないでしょうか。

回答:

回答№1は0

すべての数が等間隔である場合、最悪のシナリオでは二分検索を使用できません。 N.

二分探索法や他の分割統治法の考え方は、各ステップで残りの範囲のおよそ半分を削除することです。すべてのアイテムの間隔が N3つ以上の連続したアイテムのすべての範囲は、潜在的にの距離が1対の隣人を含む可能性があります。 > Nしたがって、検討中の2つのサブ範囲のうちどちらか一方を除外することはできません。あなたは結局あなたを犠牲にして、連続したアイテムのあらゆる単一のペアを調べるでしょう O(NumItems).

とは言っても、あなたはおそらく一般的なケースを最適化することができます。 O(NumItems) 潜在的な剪定機会のために。


回答№2の場合は0

あなた(まあ、私は) "t:" 二分検索はソートされたリストを必要とし、あなたは単にリストをスキャンするよりあなたがこのリストをソートするのにより多くの時間を費やすことになるでしょう。