
プログラムの性能改善の課題が出ているのですが、アルゴリズムとしてネストループ方式、もしくはその延長上のものを用いること、とあります。
図書館でアルゴリズム関係の本を見てみたのですがどこにもネストループに関して説明がなく、大変困っています。
プログラム自体は、ファイルを読み込んで、表示させるだけの簡単なものです。
簡単に抜き出すと、
for (i=0;; i++){
if ((st = read_a(fd_name, &name_buf, i)) <=0) break;
for (j = 0;; j++){
if ((st =read_a (fd_home,&home_buf ,j)) <= 0) break;
if (!strcmp(name_buf.a , home_buf.b)){
printf("%s =%s (%s)\n", name_buf.a, name_buf.c ,
home_buf.c);
}
}
if (st <0) break;
といったものです。
注意事項として、break文を入れる手法を使わないこととあります。
お願いします。ネストループって何でしょう?教えてください。
No.2ベストアンサー
- 回答日時:
ネストループはリレーショナルデータベースでジョインを行うアルゴリズムと
してよく知らせています。
RDBMS で使われるネストループのアルゴリズムを簡単に説明すると、ファイル
でも表でもいいんですが2つあって、次のような感じのデータが入っていたと
します。
ファイル(表)1
ID 名前
3 佐藤
1 鈴木
5 中村
2 高橋
:
ファイル(表)2
ID 住所
1 東京都
2 大阪府
3 長野県
4 神奈川県
5 北海道
:
ここから
名前 住所
佐藤 長野県
鈴木 東京都
中村 北海道
高橋 大阪府
:
という出力を得る場合に、ファイル(表)1の1行目を読み込んで ID が
同じ行をファイル(表)2の先頭行から探していき、ID が同じ行が見つ
かったら、ファイル(表)1とファイル(表)2のデータを出力し、ファイル
(表)1の次の行の ID と同じ ID を持つ行をファイル(表)2の先頭行から
再度読み込んで探し、.... という繰り返しをするアルゴリズムです。
この方法だと、ファイル(表)1の行数 * ファイル(表)2の行数回の
比較が必要であるのと、ファイル(表)2は1度読み込んだ行をもう一度
読む必要があるので非効率的です。
データがソート済みであったりするともっと効率的なソートマージという
アルゴリズムが適用できます。またハッシュを使ったりするようなアルゴリズム
もあります。
回答ありがとうございます。(^_^)
なるほど。IDをファイル1から一行ずつ読み込んでファイル2とあわせていけばいいのですね。
とてもわかりやすかったです@
レポートなんで、効率とかは気にしません。自信のある人はハッシュクラスタリングを実装しても良い、とか先生は言うけど自信なんてないし(・_・;)
このくらいのプログラミングならできるかな・・・?
卒業がかかっているんでホントありがたかったです。
少しいじってみます。わからなくなったらまたお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正しい五十音順について
-
書籍のソースコードを別言語に...
-
シードを考慮したトーナメント...
-
アルゴリズム フェルナンデス...
-
あのビル・ゲイツもやったオセ...
-
乗換案内の作り方が知りたいです。
-
ハードディスクの処分について...
-
C♯で電卓を作成しています。演...
-
65536は2の何乗なのでしょうか?
-
ファイルの開き方
-
あるプログラムのコマンドライ...
-
ドロップダウンリストの文字を...
-
javaからAS400のプログラム起動
-
VBAで仕様書は書きますか?
-
銃を発砲するならともかく、日...
-
自動クエリとはどういうもので...
-
PICマイコンのコピー(クローン...
-
io.hをincludeするとそのような...
-
OS入ってる機器のソフト・アプ...
-
ccコマンドの使い方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正しい五十音順について
-
C♯で電卓を作成しています。演...
-
一番近い組み合わせを見つけるには
-
シードを考慮したトーナメント...
-
アルゴリズムとプロトコールの違い
-
グループを均等に分けるには?...
-
多変数関数の最小値を求めるプ...
-
プログラミングをしたいのです...
-
期間重複チェックがわかりません
-
5人のテストの点数を入力すると...
-
ハノイの塔のさいきアルゴリズ...
-
マージソートの比較回数の計算...
-
トップダウン解析とボトムアッ...
-
ハッシュアルゴリズム
-
フリーセルの難易度について
-
diffのアルゴリズムについて詳...
-
C# 再帰よるスタックオーバー...
-
最大公約数を求めたい!
-
書籍のソースコードを別言語に...
-
複数の点を最短距離で全て繋ぐ...
おすすめ情報