最大値選択なんですけれども
このフローチャートの意味がわかりません…ループの始まりと終わりの意味などはわかるのですが、交換や最大値x(k) → w 、x(i) → x(k)、w→ x(i)の部分が何を言いたいのか分らないんです。
宜しくお願いします。
( 開 始 )
 ̄ ̄ ̄│ ̄ ̄ ̄
───┴───
/ 交 換 \
│i =1,2,...,n-1│
└───┬───┘
┌───┴───┐
│ i → k │
└───┬───┘
───┴───
/ 最大値 \
│j=i+1,i+2,..,n│
└───┬───┘
│
/ \
/ \ ≦
(*) …/x(j):x(k)\───┐
\ / │
\ / │
\ / │
│> │
┌───┴───┐ │
│ j → k │ │
└───┬───┘ │
│←─────┘
┌───┴───┐
│ │
\ 最大値 /
───┬───
┌───┴───┐
│ x(k) → w │
│ x(i) → x(k)│
│ w → x(i)│
└───┬───┘
┌───┴───┐
│ │
\ 交 換 /
───┬───
───┴───
( 終 了 )
No.3ベストアンサー
- 回答日時:
No.2です。
i=1から順に追ってみましょう。
1 2 3
4 9 8
初めはk=1、j=2ですので、
k<4>とj<9>の比較です
jの方が大きいので、kはj、つまり2となります。
次は、k=2、j=3ですので、
k<9>とj<8>の比較です
kの方が大きいので何もしません。
そしてループを抜けて、交換します。
x(k)つまりx(2)と、x(i)つまりx(1)の交換です。
1 2 3
9 4 8
同様にしてi=2もやると
1 2 3
9 8 4
となります。
このプログラムですが、交換してる部分を見ると、最大値を選択するだけでなく、大きいもの順に並べ替えるプログラムであると言えます。
フローチャートやループに対する知識もあいまいだったのでかなり悩んでたんですが、漸く分かりました^^;
丁寧に教えて頂き、本当にありがとうございました!
No.2
- 回答日時:
最初の交換のところはループの条件が書いてあります。
iの値が1からn-1までループが続くってことですね。
んで最大値のところは、
jの値がi+1からnまでループが続くってことです。
何故このようなループ条件なのか。
全部で数がn個ありますよね。
数を比較する時、1番目の数と2番目の数、1番目の数と3番目の数・・・という風にしますよね。
これを表しています。
ループに初めてたどり着いた時を考えてみます。
iには1が入ってますよね?
とするとjはi+1ですので、2が入ってます。
iの値はkに代入されてるので、実際には、x(k)とx(j)、つまりx(1)とx(2)、つまりは1番目の数と2番目の数を比較しているわけです。
わかりにくかったらまた言ってください(^^;
ありがとうございます。そこの部分もよく分かりました。
あとはなんというか表現しづらいのですが…i=1~n-1までループすると思うんですが、その際x(j)>x(k)を満たすものはjがkになっていくんですよね?
例えば 4、9、8という列があるとすると
i=1からこの作業をやっていくと、i=1の時x(1)をx(2)に代入、i=2の時x(2)はj→kの処理を受けないのでそのままになりますが、これは9がそのままになるのか、それとも9と交換した4がそのままになるのかどちらでしょう?あまり問題とは関係ないのですが気になってしまって…すみません^^;
No.1
- 回答日時:
2つの値を交換するとき、ついつい
x(i) → x(k)
x(k) → x(i)
としそうになるかもしれません。
しかし、これは間違いです。
具体的な値を使ってやってみるとわかりますが、
2つの値は同じになってしまいます。
そうならないように、片方の値をいったん脇へどけておくための処理が
x(k) → w
です。こうしておくと、x(i)をx(k)に入れることができます。
この瞬間、x(i)とx(k)の値は同じですが、wにx(k)のもともとの値を
保存してありますので、2つの値はちゃんと残っています。
最後に、wに保存してあった値をx(i)に入れれば、
無事に交換が完成します。wはほったらかしにしておいてかまいません。
詳しい回答ありがとうございます。
なるほど交換のところはよく分かりました。
ただ最初の交換のところと最大値のところの意味もよく分かりません。
なにぶんまだこういったことを勉強し始めたばかりなので…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 車検・修理・メンテナンス 残価設定型の乗り換えについて 6 2023/01/21 18:53
- 学校 至急です。あるイベントスタッフのバイトを最近やってそのバイト終わりに歩いてたらイベントにファンで来て 3 2022/12/12 13:57
- 知人・隣人 至急です。あるイベントスタッフのバイトを最近やってそのバイト終わりに歩いてたらイベントにファンで来て 3 2022/12/12 13:16
- その他(社会・学校・職場) 至急です。悩んでいますみなさん教えてください、、 当方女子大生で相手も男子大学生でした。最近イベント 3 2022/12/15 08:05
- その他(社会・学校・職場) 至急です。悩んでいますみなさん教えてください、、 当方女子大生で相手も男子大学生でした。最近イベント 3 2022/12/15 00:09
- バイク車検・修理・メンテナンス チェーン 1 2022/10/11 15:21
- 会社・職場 エレメント交換について 人によって基準が異なるので困っています。 7 2022/04/21 16:32
- 格安スマホ・SIMフリースマホ ゲオモバイルSIM契約 Amazon ギフトカード1万5000円 メインアカウントに入金できる? 1 2022/12/24 17:35
- アニメ 浅野温子さんがドラえもんの声優オーディションの最終審査で落選してしまった理由について 2 2022/09/10 00:00
- 郵便・宅配 国内に到着し、国内の国際交換局から発送された郵便が、最寄りの郵便局に輸送されません。 中国から送られ 1 2022/10/30 03:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミングについて。 1つ...
-
画面を強制的に再描画させる方法
-
DoEventsが必要な理由について
-
エクセルの当番表を作っていま...
-
VBAで3秒だけ時間を止めたい
-
ループ内での条件処理
-
DOSコマンドのループ内のTIMEコ...
-
アクティブセルから、A列最終行...
-
VBA Dir関数でファイルをループ...
-
VBA for i=1 to lastrow
-
UWSCの終了の仕方
-
GIFアニメをループさせたくない
-
while(*s++=*t++)の判定は?
-
範囲指定したセルを1つずつ飛...
-
どなたかこのプログラミングを...
-
Javascriptでalertを大量のルー...
-
テキストボックスの名前に変数...
-
vbscriptでIE自動入力(途中で...
-
乱数の桁数指定、または範囲指定。
-
Java 南京錠
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAで3秒だけ時間を止めたい
-
VBAでの一時停止と再開の方法
-
どなたかこのプログラミングを...
-
Escキーを押すと、中断する時と...
-
UWSCの終了の仕方
-
エクセルの当番表を作っていま...
-
VBA for i=1 to lastrow
-
「偶数・奇数の和」のフローチ...
-
アクティブセルから、A列最終行...
-
DoEventsが必要な理由について
-
vb.netからエクセル関数書き込み
-
GIFアニメをループさせたくない
-
DOSコマンドのループ内のTIMEコ...
-
範囲指定したセルを1つずつ飛...
-
流れ図(フローチャート)が分か...
-
乱数の桁数指定、または範囲指定。
-
テキストボックスの名前に変数...
-
CSVファイルの特定の行だけを読...
-
vb.netです。2次元配列の要素を...
おすすめ情報