プログラムの性能改善の課題が出ているのですが、アルゴリズムとしてネストループ方式、もしくはその延長上のものを用いること、とあります。
図書館でアルゴリズム関係の本を見てみたのですがどこにもネストループに関して説明がなく、大変困っています。
プログラム自体は、ファイルを読み込んで、表示させるだけの簡単なものです。
簡単に抜き出すと、
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- C言語・C++・C# C言語で再起関数とポインタを用いて文字列反転をする方法がわかりません。 4 2023/04/29 20:32
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Ruby vscode 文字化け 1 2022/05/21 19:17
- C言語・C++・C# C言語について 4 2022/07/02 01:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正しい五十音順について
-
Dijkstraて
-
Stuck
-
偏りのある乱数のアルゴリズム
-
BCDについて
-
2つのテキストファイルを比較...
-
小町算(+,-のみ)のトレースです。
-
gooという検索エンジンの後にGo...
-
障害物回避プログラム
-
脳内メーカーのようなサービス...
-
Nクイーン問題のアルゴリズムに...
-
フリーセルの難易度について
-
C# 再帰よるスタックオーバー...
-
JPEG圧縮で8×8に分割する理由に...
-
暗号化・復号化のアルゴリズム...
-
傾いた長方形と、傾いていない...
-
三次元形状曲面の導出法
-
詰め将棋をとくのは、アルゴリ...
-
経路探索について
-
OSI参照モデルと関連の質問
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正しい五十音順について
-
Stuck
-
アルゴリズムとプロトコールの違い
-
画像から文字を認識してテキス...
-
[ EXCEL VBA ] 図形を読み込む...
-
BCDについて
-
期間重複チェックがわかりません
-
gooという検索エンジンの後にGo...
-
2つのテキストファイルを比較...
-
ハッシュアルゴリズム
-
理系の高校生です。大学で情報...
-
あいまい検索(文字列一致率)
-
デジタル時計のアルゴリズム
-
経路探索について
-
グループを均等に分けるには?...
-
m個の数字をn個のグループに分...
-
乱数って・・・
-
確率論的な麻雀の勝ち方を教え...
-
多変数関数の最小値を求めるプ...
-
OpenCVのライセンスについて
おすすめ情報