Javaでのバイナリ検索—アルゴリズム

Javaでバイナリ検索を実装する方法を学ぶ

みなさん、こんにちは!私は自分のブログにたくさんのアルゴリズムとデータ構造の記事を公開しましたが、これはここで最初のものです。この記事では、インタビューでよく使われる基本的なアルゴリズムについて説明します。

はい、あなたはそれを正しく推測しました。Javaでバイナリ検索を実装する必要があり、反復と再帰の両方のバイナリ検索アルゴリズムを作成する必要があります。

コンピュータサイエンスでは、二分探索、または半間隔探索は、分割統治アルゴリズムであり、ソートされた配列内のアイテムの位置を特定します。二分探索は、入力値を配列の中央の要素と比較することによって機能します。

比較により、要素が入力に等しいか、入力よりも小さいか、入力よりも大きいかが判別されます。比較される要素が入力と等しくなると、検索は停止し、通常は要素の位置を返します。

要素が入力と等しくない場合は、入力が要素よりも小さいか大きいかを判断するために比較が行われます。

結果に応じて、アルゴリズムは最初からやり直しますが、配列の要素の上位または下位のサブセットのみを検索します。

入力が配列内にない場合、アルゴリズムは通常、-1のようにこれを示す一意の値を出力するか、JavaのようにRuntimeExceptionをスローしますNoValueFoundException。

バイナリ検索アルゴリズムは、通常、連続する反復ごとにチェックするアイテムの数を半分にします。したがって、対数時間で特定のアイテムを特定します(またはその不在を判別します)。

ところで、基本的な検索と並べ替えのアルゴリズムに慣れていない場合は、「データ構造とアルゴリズム:Javaを使用した詳細」などのコースに参加して基本的なアルゴリズムを学ぶこともできます。

Javaを選択した言語でない場合は、このアルゴリズムコースのリストでJavaScriptとPythonに関するその他の推奨事項を見つけることができます。

ところで、本が好きなら、Thomas H.CormenによるIntroductiontoAlgorithmsのような包括的なアルゴリズムの本を読むことをお勧めします。

Javaでの反復二分探索のロジックを示すサンプルコードを次に示します。

Javaでのバイナリ検索の実装

これは、Javaでバイナリ検索を実装するためのサンプルプログラムです。アルゴリズムは再帰的に実装されます。また、Javaでのバイナリ検索の実装について知っておくべき興味深い事実は、有名なEffectiveJavaの本の著者であるJoshuaBlochが「java.util.Arrays」でバイナリ検索を書いたことです。

これで、Javaで再帰を使用してバイナリ検索を実装する方法について説明しました。線形検索に加えて、これらはコンピュータサイエンスのクラスで学ぶ重要な検索アルゴリズムの2つです。

二分探索木データ構造は、このアルゴリズムを利用してデータを階層構造に配置し、O(logN)時間で任意のノードを検索できるようにします。

ただし、バイナリ検索を使用するには、並べ替えられたリストまたは配列が必要であるため、現実の世界でバイナリ検索アルゴリズムの使用を検討する場合は、並べ替えのコストも考慮する必要があることを覚えておく必要があります。


データ構造とアルゴリズムのさらなる学習:Java
アルゴリズムとデータ構造を使用した詳細—パート1と2
Java9のデータ構造HeinzKabutz著
10インタビュー用アルゴリズムブック10インタビュー用
データ構造とアルゴリズムコース
5データ構造とアルゴリズムを学習するための無料コース

あなたが好きかもしれない他のデータ構造とアルゴリズムのチュートリアル

  • Javaでクイックソートアルゴリズムを実装するにはどうすればよいですか?(チュートリアル)
  • Javaでバイナリ検索ツリーを実装する方法は?(解決策)
  • 再帰なしでクイックソートアルゴリズムを実装する方法は?(チュートリアル)
  • Javaで挿入ソートアルゴリズムを実装する方法は?(チュートリアル)
  • Javaでバブルソートアルゴリズムを実装する方法は?(チュートリアル)
  • 比較ベースと非比較ベースのソートアルゴリズムの違いは何ですか?(回答)
  • Javaでバケットソートを実装する方法は?(チュートリアル)
  • Javaで再帰なしでバイナリ検索アルゴリズムを実装するにはどうすればよいですか?(チュートリアル)
  • プログラマーのための50以上のデータ構造とアルゴリズムのコース(質問)

PS —アルゴリズムのスキルの向上に真剣に取り組んでいるのであれば、データ構造とアルゴリズム:Javaを使用し た詳細な説明から始めるのが最適だと思います。

提案された投稿

ドメイン名に関する情報の検索

Brian P. Hogan 著『Small, Sharp Software Tools』からの抜粋

ドメイン名に関する情報の検索

facebook.com にリクエストを送信すると、コンピュータはドメイン名を検索してそのドメイン名を IP アドレスに変換し、コンピュータが接続できるようにします。

Spring Boot での Apache Kafka の構成と使用

スプリングブーツを履いたカフカ

Spring Boot での Apache Kafka の構成と使用

はじめに Apache Kafka は、大規模で高スループット、フォールトトレラントなリアルタイム データ ストリーミングを処理するオープンソースの分散ストリーミング プラットフォームです。このシステムは、プロデューサーがトピックにメッセージをパブリッシュし、コンシューマーがそれらのトピックをサブスクライブしてメッセージを消費するパブリッシュ/サブスクライブ モデルに基づいています。

関連記事

アートは政治的ではないのでしょうか?

アートは政治的ではないのでしょうか?

昨日、私たちは今年のユーロビジョン・ソング・コンテストの幕を閉じました。きらびやかでカオスなグランドフィナーレでスウェーデンの歌手ローリーンがトロフィーを持ち帰り、女性として初めて2回優勝し、ABBAがコンテストで優勝してから50年目にその栄冠をスウェーデンに持ち帰りました。 「ワーテルロー」で。彼らはポップ ミュージックの規範において最大のアーティストの 1 つになりました。

デザインに 2 年 - 良い点、悪い点、そして醜い点…

デザインに 2 年 - 良い点、悪い点、そして醜い点…

「Hey Siri、オリビア・ディーンの『ミー・ダイブ』をかけて」私がナイジェリアのアクレにあるフューチャー アカデミー アフリカでインターンシップを始めたのは、2021 年 5 月のことでした。

キリスト教徒の迫害: 私たちが語らないヘイトクライム

イスラム嫌悪のことは忘れてください。宗教的憎悪犯罪の主な犠牲者はキリスト教徒(そしてユダヤ人)です。

キリスト教徒の迫害: 私たちが語らないヘイトクライム

理性的な人なら誰でも、政界とメディア界が左派、さらには極左によって支配されており、政治的言説に不均衡を生み出している状況を知っています。宗教の分野では、この不均衡は明らかです。左翼の新聞やネットワークは急いでキリスト教の信仰を擁護していません。

ジャーナル・アウトバート

ジャーナル・アウトバート

日記を開く: 1 日 1 枚の写真。私はいつも物語に魅了されてきました。