データ構造

表探索アルゴリズムの解説と種類

文書情報

言語 Japanese
ページ数 40
フォーマット | PDF
サイズ 362.02 KB

概要

I.表探索

表探索は、表形式のデータから条件に合うデータを抽出する操作です。表内の各データはレコードと呼ばれ、各フィールド(項目)で構成されています。データを大小関係で比較できる数値データや文字データには、効率的な二分探索法が適用できます。一方、構造化データには、グラフ探索や木探索などの方法が用いられます。

1. 表探索の定義と用語

表探索は、配列に格納されたデータから条件に一致するデータを抽出する操作です。各データはレコードと呼ばれ、名前や生年月日などのフィールドから構成されます。表探索は探索とも呼ばれます。

2. 探索方法

表探索の方法は、データ構造によって異なります。数値データの場合、二分探索法や線形探索法が使用されます。文字列データの場合、力任せ法やKMP法などの文字列探索法が使用されます。

3. アルゴリズム

線形探索法 配列の中を順番に探索します。 二分探索法 昇順にソートされた配列を半分に分割し、探索キーと中央データを比較しながら探索します。

4. 演習問題

整数配列や文字列配列を探索する演習問題が例示されています。

5. 文字列の探索

文字列のソートや探索には、文字列の比較関数やファイル操作関数を使用します。

II.線形探索法

線形探索法は、データの始まりから順番に探索する方法です。ランダムに並んだ数値データの探索に適しています。

1. 線形探索法

数値データがランダムに並んでいる配列構造のデータにおいて、要素を先頭から順番に探索する方法です。

III.二分探索法

二分探索法は、ソートされた配列から探索キーを効率的に検索する方法です。探索範囲を二分することで、探索回数を削減できます。探索キーと中央データを比較し、範囲を絞り込みながら探索を実行します。

1. 二分探索法の概要

二分探索法はソートされた配列から探索キーを探す方法です。まず配列を2つに分け、探索キーと中央データとの比較を行います。探索キーが中央データと等しければ中央位置を出力して処理を終了します。探索キーの方が小さければデータ範囲を前半に絞り、大きければ後半に絞ります。この手順を繰り返すことで、探索キーの位置を効率的に特定します。

2. 二分探索法のアルゴリズム

入力: 昇順にソートされた配列 aa[0],...,a[n-1])、探索キー x出力: 探索キー xa の中の位置 p(存在しない場合は -1) 補助: i,j,m(中央位置用)

手順:

  1. データ範囲の初期化
  2. 終了条件の確認
  3. 探索キーと中央データとの比較
  4. データ範囲の絞り込み
  5. 3と4を繰り返す

IV.文字列の処理

文字列を探索するためには、まずソートする必要があります。文字列のソートには、選択ソートやクイックソートなどのアルゴリズムが使用できます。ソートされた文字列は、二分探索法で効率的に探索できます。

1. 文字列のソート

文字列をソートするには、数値のソート関数に修正を加える必要があります。文字列の比較には strcmp 関数を使用します。

2. 文字列の探索

文字列の探索には、二分探索関数に修正を加えます。二分探索法は、ソートされた配列に対して効率的に探索を実行できます。

3. 例題

例題では、ipt.dat ファイルの空白をタブに変換するプログラムを作成します。ファイルのオープン/クローズ、文字の入出力関数、文字列の入出力関数、フォーマット化入出力関数などの関数を活用します。

V.ファイル処理

ファイルの入出力には、様々な関数があります。ファイルを開くには fopen() を、閉じるには fclose() を使用します。文字の入出力には fgetc() や fputc()、文字列の入出力には fgets() や fputs() が使用できます。また、ファイルポインタを移動するには fseek() を使用します。