目次
配列検索アルゴリズムの包括的なリスト
線形探索
二分探索
ハッシュ テーブル
実践例
ホームページ バックエンド開発 C++ 配列の検索アルゴリズムは何ですか?

配列の検索アルゴリズムは何ですか?

Jun 04, 2024 am 09:28 AM
配列 検索アルゴリズム

配列検索アルゴリズムのコレクション: 線形検索: 配列を走査し、時間計算量 O(n)。二分探索 (順序付けされた配列のみ): 配列を時間計算量 O(log n) の 2 つに分割します。ハッシュ テーブル: キー値を使用した高速ルックアップ、時間計算量 O(1)。

配列の検索アルゴリズムは何ですか?

配列検索アルゴリズムの包括的なリスト

コンピューターサイエンスでは、配列検索アルゴリズムは、順序付き配列または順序なし配列内の特定の要素を見つけるために使用されます。この記事では、時間計算量や実際の例を含め、さまざまな配列検索アルゴリズムについて説明します。

線形探索

時間計算量: O(n)

線形探索は、最も単純かつ最も直接的な探索アルゴリズムです。配列の先頭から開始して、ターゲット要素が見つかるか配列の末尾に到達するまで、要素を 1 つずつ比較します。

def linear_search(arr, target):
  for i in range(len(arr)):
    if arr[i] == target:
      return i
  return -1
ログイン後にコピー

二分探索

時間計算量: O(log n)

二分探索は、順序付けされた配列内での検索に使用されます。配列を繰り返し半分に分割することで、検索範囲を絞り込みます。

def binary_search(arr, target):
  left, right = 0, len(arr) - 1
  while left <= right:
    mid = (left + right) // 2
    if arr[mid] == target:
      return mid
    elif arr[mid] < target:
      left = mid + 1
    else:
      right = mid - 1
  return -1
ログイン後にコピー

ハッシュ テーブル

時間計算量: O(1)

ハッシュ テーブルは、キー値によって要素をすばやく見つけることができるデータ構造です。配列は、インデックスがキーとして使用されるハッシュ テーブルの基礎となるデータ構造として使用できます。

def hash_search(arr, target):
  hash_table = {}
  for i in range(len(arr)):
    hash_table[arr[i]] = i
  if target in hash_table:
    return hash_table[target]
  else:
    return -1
ログイン後にコピー

実践例

生徒のスコアを見つけるための次の配列検索の例を考えてみましょう:

students = [
  {'name': 'John Doe', 'score': 85},
  {'name': 'Jane Doe', 'score': 90},
  {'name': 'Bill Smith', 'score': 75},
  {'name': 'Alice Johnson', 'score': 95}
]
ログイン後にコピー

「Alice Johnson」のスコアを見つけたい場合は、線形検索を使用できます:

for student in students:
  if student['name'] == 'Alice Johnson':
    print(student['score'])  # 输出:95
ログイン後にコピー

あるいは、配列がソートされている場合名前で二分検索を使用できます:

students.sort(key=lambda x: x['name'])

left, right = 0, len(students) - 1
while left <= right:
  mid = (left + right) // 2
  if students[mid]['name'] == 'Alice Johnson':
    print(students[mid]['score'])  # 输出:95
    break
  elif students[mid]['name'] < 'Alice Johnson':
    left = mid + 1
  else:
    right = mid - 1
ログイン後にコピー

以上が配列の検索アルゴリズムは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

foreach ループを使用して PHP 配列から重複要素を削除するにはどうすればよいですか? foreach ループを使用して PHP 配列から重複要素を削除するにはどうすればよいですか? Apr 27, 2024 am 11:33 AM

foreach ループを使用して PHP 配列から重複要素を削除する方法は次のとおりです。配列を走査し、要素がすでに存在し、現在の位置が最初に出現しない場合は、要素を削除します。たとえば、データベース クエリの結果に重複レコードがある場合、このメソッドを使用してそれらを削除し、重複レコードのない結果を取得できます。

PHP 配列ディープ コピーの技術: さまざまな方法を使用して完璧なコピーを実現する PHP 配列ディープ コピーの技術: さまざまな方法を使用して完璧なコピーを実現する May 01, 2024 pm 12:30 PM

PHP で配列をディープ コピーする方法には、json_decode と json_encode を使用した JSON エンコードとデコードが含まれます。 array_map と clone を使用して、キーと値のディープ コピーを作成します。シリアル化と逆シリアル化には、serialize と unserialize を使用します。

PHP 配列キー値の反転: さまざまな方法のパフォーマンス比較分析 PHP 配列キー値の反転: さまざまな方法のパフォーマンス比較分析 May 03, 2024 pm 09:03 PM

PHP の配列キー値の反転メソッドのパフォーマンスを比較すると、array_flip() 関数は、大規模な配列 (100 万要素以上) では for ループよりもパフォーマンスが良く、所要時間が短いことがわかります。キー値を手動で反転する for ループ方式は、比較的長い時間がかかります。

PHP 配列の多次元ソートの実践: 単純なシナリオから複雑なシナリオまで PHP 配列の多次元ソートの実践: 単純なシナリオから複雑なシナリオまで Apr 29, 2024 pm 09:12 PM

多次元配列のソートは、単一列のソートとネストされたソートに分類できます。単一列のソートでは、array_multisort() 関数を使用して列ごとにソートできますが、ネストされたソートでは、配列を走査してソートするための再帰関数が必要です。具体的な例としては、製品名による並べ替えや、売上数量や価格による化合物の並べ替えなどがあります。

PHP 配列のディープ コピーのベスト プラクティス: 効率的な方法を発見する PHP 配列のディープ コピーのベスト プラクティス: 効率的な方法を発見する Apr 30, 2024 pm 03:42 PM

PHP で配列のディープ コピーを実行するためのベスト プラクティスは、 json_decode(json_encode($arr)) を使用して配列を JSON 文字列に変換し、それから配列に戻すことです。 unserialize(serialize($arr)) を使用して配列を文字列にシリアル化し、それを新しい配列に逆シリアル化します。 RecursiveIteratorIterator を使用して、多次元配列を再帰的に走査します。

データソートにおけるPHP配列グループ化機能の応用 データソートにおけるPHP配列グループ化機能の応用 May 04, 2024 pm 01:03 PM

PHP の array_group_by 関数は、キーまたはクロージャ関数に基づいて配列内の要素をグループ化し、キーがグループ名、値がグループに属する要素の配列である連想配列を返すことができます。

検索アルゴリズムに C++ 再帰関数を適用しますか? 検索アルゴリズムに C++ 再帰関数を適用しますか? Apr 17, 2024 pm 04:30 PM

再帰関数は、ツリー状のデータ構造を探索するための検索アルゴリズムで使用されます。深さ優先検索ではスタックを使用してノードを探索しますが、幅優先検索ではキューを使用してレイヤーごとに検索します。ファイルの検索などの実際のアプリケーションでは、再帰関数を使用して、指定されたディレクトリ内の特定のファイルを検索できます。

PHPで配列内の値をサイズで並べ替える方法 PHPで配列内の値をサイズで並べ替える方法 Mar 22, 2024 pm 05:24 PM

PHP は、Web サイト開発およびデータ処理分野で広く使用されている、一般的に使用されるサーバー側スクリプト言語です。 PHP では、配列内の値をサイズで並べ替えるのは非常に一般的な要件です。組み込みのソート関数を使用すると、配列を簡単にソートできます。以下では、PHP を使用して配列内の値をサイズで並べ替える方法を、具体的なコード例とともに紹介します。 1. 配列内の値を昇順に並べ替えます。

See all articles