質問

なので、たいへの理解を深めのバイナリ検索の原因になるんです。バイナリ検索が前提となる配列は、全部エクスペディアで。私はそうなんですか?そのような方法はチェックこの前提条件や例外をスローする場合でなくてはならなくなってしまう。が、その確認の前提条件の悪い方が考えたんですか?

役に立ちましたか?

解決

データをチェックするとソートされるので、それは悪い考えです n ステップ。全体の検索は約です log(n) ステップ。
確認する場合は、線形検索を行うこともできます。

他のヒント

バイナリ検索の全体的なポイントは、データが既にソートされているため、必要な情報をすばやく見つけることができるということです。

姓でソートされた電話帳を取ります。

電話帳にどのように誰かを見つけますか?あなたはそれをあなたが望むものの近くにあると仮定するページにそれを開き、それからページのフリップを開始します。

しかし、毎回1ページをひっくり返すことはありません。多くのページを逃した場合、たくさんのページをひっくり返してから、最終的に1ページをめくり始めます。

これがバイナリ検索が行うことです。データはソートされているため、多くのスキップを発揮して別の外観を実行できることを知っており、必要な情報に焦点を当てます。

バイナリ検索は、2倍のアイテムの数ごとに1つの比較を行います。したがって、1024要素のコレクションでは、せいぜい10回の比較が必要になります。

実際のバイナリ検索を実行する前に、完全な実行スルーを実行してデータがソートされているかどうかを確認する場合、情報のスキャンを行うだけでもあります。完全な実行スルー +バイナリ検索ではN + log2 N操作が必要になるため、1024要素の場合、約1034の比較が必要になりますが、情報の単純なスキャンには平均して半分が必要です。これは512です。

したがって、データがソートされていることを保証できない場合は、単純なスキャンでアウトパフォームするため、バイナリ検索を使用しないでください。


編集: :私はこれを言うでしょう、あなたはこれを検証するためにデバッグのみのコードステップを追加して、バイナリ検索のためにデータを準備することになっているコードのバグをキャッチするためにこれを検証することができますが、私が上に書いたもののために、それを知っています、これにより、合計の実行時間がはるかに高くなります。そのため、このチェックで何をしたいかに応じて、追加したい場合としない場合があります。ただし、リリースコードに存在しないでください。

YEP、バイナリ検索には0(log n)ステップが含まれ、シーケンス全体がソートされることを確認するには、0(n)ステップが含まれます。私の観点からは、リリース中ではなく、デバッグモードで検証することは良いことです。

バイナリ検索 入力データがソートされていると仮定します。だからここであなたは正しいです。

一般に、データがしばらくソートされているかどうかを確認しています。したがって、すべての検索の前にこれを実行すると、検索が非常に非効率的になります。

詳細。

「n」がデータの量であると仮定します。

バイナリ検索 ニーズ O(log(n)) 要素を見つけるための最悪の場合の動作。データがソートされていることを確認する必要があります O(n) オペレーション。

だから、私たちが非常に大きなことを毎回前提条件をチェックするなら n 実際の検索を行うよりも、ほとんどの時間を前提条件のチェックに費やし始めます。

そして、あなたがそのような効果を見るときに言うのはそれほど難しくありません。私はあなたが事前に採石するのにどれくらいの時間を費やすかを計算しました。

  • 1つの要素については、検索に時間を費やしません。
  • 2つの要素の場合、検索に50%を費やします。
  • 5つの要素について、検索に46%を費やします
  • 20の要素については、検索に22%を費やします。
  • 100の要素については、検索に7%を費やします。

等々。あらゆる場合において、時間通りに休むことは、前提条件チェックに費やしています。

他のすべての人が実行時間について言ったこと(o(n)すべてのアイテムをチェックするために、vs。o(log(n))はバイナリ検索を実行します。

私はあなたが事前条件のアイデアを誤解していると思います。事前条件と事後条件は契約です。前提条件が真であり、アルゴリズムを実行する場合、POST条件が真実になります。前提条件が虚偽の場合、ポスト条件について保証はありません。

したがって、基本的に、バイナリ検索には次のように述べています。あなたが私に与えたデータがすでにソートされている場合、特定のデータの位置を伝えることができます。データがソートされていない場合、私は自分の答えについて保証しません。

アルゴリズムの場合は、事前条件から事前条件に挑む作業。この場合、バイナリ検索。

の質問を前提とするをご利用のバイナリ検索を集めたデータです。ることはない。くまでも計算するための番号の一部の間隔で出ています。

仮にしようとしていを計算し、最適な速度を設定します。何らかの理由でな閉じた表現、シミュレーの空気の流れ異なる速度を設定します。

このファンで時速0RPMを5000RPMまな生のリストの速度で実行します。あなただけの平均で前回の最小値と最大で、各ステップは、バイナリを検索する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top