下記のコードで
バブルソートをする前とし終わった後の配列の中身を出力しているのですが、
ソートをしている課程についても都度出力したいです。
バブルソートのfor文の中だとは思うのですが、想定通り出力されなかったため
どこにどうシステムアウトを加えたらよいかご教示いただきたいです。
public class test{
public static void main(String[] args){
int[] a = { 2, 3, 6, 5, 9, 1, 4, 7, 8 };
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
//バブルソート
for (int i = 0; i < a.length - 1; i++) {
for (int j = a.length - 1; j > i; j--) {
if (a[j - 1] > a[j]) {
int x = a[j - 1];
a[j - 1] = a[j];
a[j] = x;
}
}
}
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
}
}
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
多分 バブルソートを始める直前と
バブルソートの一番外側のループの最後に
ダンプコードを置くのが良いと思う。
ちょっと見にくいかもだけど
Javascript風の出力なら
System.out.println(Arrays.toString(a))
の一行でOK。
これが気に入らないなら
適当なダンプルーチンをメソッドとして実装しよう。
No.3
- 回答日時:
>1回目のソートで並び替えられた配列の中身を全て出力
結局、「ソート」が
データ交換の意味なのか、
現段階の最小値をひねりだすまで処理することなのか
解らんので不明瞭
No.1
- 回答日時:
こんにちは
全部の過程を出力したいのなら、内側のforループの最後に出力を行えばよいです。
ただし、この場合は配列の内容が変化していないこともありますし、出力行数もそれなりになります。
「変化したら出力したい」のなら、入れ替えを行うごとに出力すればよいので、if文で入れ替えを行った直後に出力を行えばよいでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- Ruby vscode 文字化け 1 2022/05/21 19:17
- Java Java 配列<選挙> 4 2023/07/31 15:07
- その他(プログラミング・Web制作) 十進BASICでの再帰についての質問です。 2 2022/11/18 09:17
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
System.err. printlnとSystem.o...
-
Javaで改行などが出来ないのです。
-
flush()とclose()について
-
System.out.printlnの出力先
-
system.out.printが出力されない
-
1~100までの数字を表示したい
-
一定のスペースを空けて端を揃...
-
StringBufferで改ページ処理を...
-
tomcatのstdout.logを停止したい。
-
Log4jで機能毎に別ファイルへ出...
-
テキストエリアで改行する
-
VBAでEUC-JPのHTMLソースを取得...
-
大容量のテキストファイルの内...
-
1~100までの数字を表示し、か...
-
java for文、if文を使っての三角形
-
javascriptでcsv出力しようと思...
-
プールとスプールの違いがわか...
-
Javaで任意のパスへ任意のファ...
-
javaのUDP受信プログラムについて
-
JavaScriptの変数をjavaのメソ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.err. printlnとSystem.o...
-
1~100までの数字を表示し、か...
-
Javaで改行などが出来ないのです。
-
Log4jで機能毎に別ファイルへ出...
-
1~100までの数字を表示したい
-
flush()とclose()について
-
System.out.printlnの出力先
-
ジャバスクリプトについて。
-
system.out.printが出力されない
-
Eclipseのコンソールを常に表示...
-
System.out.printlnの意味がよ...
-
一定のスペースを空けて端を揃...
-
switch分が機能しません。
-
Tomcatが無応答となる現象が起...
-
javaのwhile文で九九の表
-
Javaの問題なのですが、 永久ル...
-
JavaScriptの変数をjavaのメソ...
-
StringBufferで改ページ処理を...
-
テキストエリアで改行する
-
tomcatのstdout.logを停止したい。
おすすめ情報
失礼しました。
想定は、
初めの状態の配列の中身を全て出力
1回目のソートで並び替えられた配列の中身を全て出力
2回目のソートで並び替えられた配列の中身を全て出力
…
ソートが完了した配列の中身を全て出力
です。
ありがとうございます!
全部の過程を出力したいので、書く位置はおっしゃるとおり
a[j] = x;
の直後になり、これは分かるのですが
System.out.println();
の()の中はどう書いたらよいのでしょうか…?
if文の中にさらにfor文を足したらできました、すみません。
ありがとうございました!