
表探索アルゴリズムの解説と種類
文書情報
言語 | Japanese |
ページ数 | 40 |
フォーマット | |
サイズ | 362.02 KB |
概要
I.表探索
表探索は、表形式のデータから条件に合うデータを抽出する操作です。表内の各データはレコードと呼ばれ、各フィールド(項目)で構成されています。データを大小関係で比較できる数値データや文字データには、効率的な二分探索法が適用できます。一方、構造化データには、グラフ探索や木探索などの方法が用いられます。
1. 表探索の定義と用語
表探索は、配列に格納されたデータから条件に一致するデータを抽出する操作です。各データはレコードと呼ばれ、名前や生年月日などのフィールドから構成されます。表探索は探索とも呼ばれます。
2. 探索方法
表探索の方法は、データ構造によって異なります。数値データの場合、二分探索法や線形探索法が使用されます。文字列データの場合、力任せ法やKMP法などの文字列探索法が使用されます。
3. アルゴリズム
線形探索法 配列の中を順番に探索します。 二分探索法 昇順にソートされた配列を半分に分割し、探索キーと中央データを比較しながら探索します。
4. 演習問題
整数配列や文字列配列を探索する演習問題が例示されています。
5. 文字列の探索
文字列のソートや探索には、文字列の比較関数やファイル操作関数を使用します。
II.線形探索法
線形探索法は、データの始まりから順番に探索する方法です。ランダムに並んだ数値データの探索に適しています。
1. 線形探索法
数値データがランダムに並んでいる配列構造のデータにおいて、要素を先頭から順番に探索する方法です。
III.二分探索法
二分探索法は、ソートされた配列から探索キーを効率的に検索する方法です。探索範囲を二分することで、探索回数を削減できます。探索キーと中央データを比較し、範囲を絞り込みながら探索を実行します。
1. 二分探索法の概要
二分探索法はソートされた配列から探索キーを探す方法です。まず配列を2つに分け、探索キーと中央データとの比較を行います。探索キーが中央データと等しければ中央位置を出力して処理を終了します。探索キーの方が小さければデータ範囲を前半に絞り、大きければ後半に絞ります。この手順を繰り返すことで、探索キーの位置を効率的に特定します。
2. 二分探索法のアルゴリズム
入力: 昇順にソートされた配列 a
(a[0],...,a[n-1]
)、探索キー x
出力: 探索キー x
が a
の中の位置 p
(存在しない場合は -1)
補助: i,j,m
(中央位置用)
手順:
- データ範囲の初期化
- 終了条件の確認
- 探索キーと中央データとの比較
- データ範囲の絞り込み
- 3と4を繰り返す
IV.文字列の処理
文字列を探索するためには、まずソートする必要があります。文字列のソートには、選択ソートやクイックソートなどのアルゴリズムが使用できます。ソートされた文字列は、二分探索法で効率的に探索できます。
1. 文字列のソート
文字列をソートするには、数値のソート関数に修正を加える必要があります。文字列の比較には strcmp
関数を使用します。
2. 文字列の探索
文字列の探索には、二分探索関数に修正を加えます。二分探索法は、ソートされた配列に対して効率的に探索を実行できます。
3. 例題
例題では、ipt.dat
ファイルの空白をタブに変換するプログラムを作成します。ファイルのオープン/クローズ、文字の入出力関数、文字列の入出力関数、フォーマット化入出力関数などの関数を活用します。
V.ファイル処理
ファイルの入出力には、様々な関数があります。ファイルを開くには fopen() を、閉じるには fclose() を使用します。文字の入出力には fgetc() や fputc()、文字列の入出力には fgets() や fputs() が使用できます。また、ファイルポインタを移動するには fseek() を使用します。