なぜ大きい順に並び替えるためにはfor文を二重に書かなければならないのですか?
import java.util.Scanner; public class SortArray { public static void main(String[] args) { int[] data = new int[6]; Scanner str = new Scanner(System.in); for (int i=0; i<data.length; i=i+1) { int kazu = str.nextInt(); data[i] = kazu; } System.out.print("配列dataは、"); for (int i=0; i<data.length; i=i+1) { if (i < 5) { System.out.print(data[i]+ ","); } else { System.out.print(data[i]); } } System.out.println(); for (int i=0; i<data.length; i=i+1) { //大きい順番にする for(int j=0; j<data.length; j=j+1){ if (data[i] < 0) { } else if (data[i] > data[j]) { int a = data[i]; data[i] = data[j]; data[j] = a; } } } int[] order = data; System.out.print("配列orderは、"); for (int i=0; i<order.length; i=i+1) { if (i < 5) { System.out.print(order[i]+ ","); } else { System.out.print(order[i]); } } System.out.println(); } }
その質問は、「小さい順なら一重ループで書ける」という意図を含んでいますでしょうか?
if (data[i] < 0) のことですか?
変数が2つあったほうが、ロジックが簡単なのでは?
1つでもできると思いますが、複雑になりそうです。
sortは使わないルールなのですね。
> なぜ大きい順に並び替えるためにはfor文を二重に書かなければならないのですか?
for文を二重に書かないで効率よく並び替える方法があったら、質問に追記した方が解決が早いかと。
何でしょう。他人が書いたコードの解説を求められているのでしょうか。ソートを目的としているのであれば必ずしも2重ループにしなくてもアルゴリズムによっては実現できるでしょうが、今、取り沙汰しているコードがバブルソートをもとにしたものっぽいので、バブルソート自体が2重ループを使うから、だけな気がします。
> 今、取り沙汰しているコードがバブルソートをもとにしたものっぽいので、
本当にバブルソートを参考にしたのであれば、改悪されている部分が見受けられますけれども。
回答2件
あなたの回答
tips
プレビュー