前提・実現したいこと
配列の中身を小さい順に並び変えるメソッドを作ろうとしています。
(配列の最小値を求めるメソッドを用いて)
方法としては、配列の最小値を取り出して、新しい配列の最初の要素に代入します。そのあとその配列の最小値があった部分にintの型で表せる最大の数を入れてから、また最小値を求めていくという繰り返しを用いていこうと考えています。
発生している問題・エラーメッセージ
出力した配列において、どうしても配列のすべての値が元の配列の最小値のみで構成されてしまいます。
該当のソースコード
Java
1// 配列の並べ替えを行うメソッド 2import java.util.Scanner; 3 4class Hainara { 5 6 static int c = 2147483647; 7 static int d = 0; 8 9// 配列の最小値を取り出すメソッド 10 static int Haisyou(int[] x) { 11 for(int i = 0;i < x.length; i++) { 12 if(c > x[i]) c = x[i]; 13 } 14 return c; 15 } 16 17// 配列の並べ替えを行うメソッド 18 static int[] Hainara(int[] x) { 19 int [] b = new int[x.length]; 20 for(int i = 0;i < x.length; i++) { 21 b[i] = Haisyou(x); 22 for(int j = 0;j < x.length; j++) { 23 if(b[i] == x[j]) { 24 x[j] = 2147483647; break; 25 } 26 } 27 } 28 return b; 29 } 30 31 32 public static void main(String[] args) { 33 Scanner stdIn = new Scanner(System.in); 34 35 System.out.print("要素数:"); 36 int n = stdIn.nextInt(); 37 int [] a = new int[n]; 38 39 for(int i = 0;i < a.length; i++){ 40 System.out.print("a["+i+"]:"); 41 a[i] = stdIn.nextInt(); 42 } 43 44 int [] e = Hainara(a); 45 46 System.out.println("[配列]"); 47 48 for(int i = 0;i < a.length; i++){ 49 System.out.print(e[i]+" "); 50 } 51 } 52}
試したこと
配列のどの場所に最小値が位置しているのかがこの出力結果に影響すると思ったので、様々な場合の配列で出力結果を調査してみました。ですが、どれも結果は変わりませんでした。
回答2件
あなたの回答
tips
プレビュー