

Javaでメソッド「arraysSort」と「display」、「change」を定義して配列を昇順、降順に並び替えようとしています。

並び替え前はうまく出力できますが、並び替え後の昇順、降順データの出力方法がわかりません。  
一応for文で回したりはしましたが、数がごちゃごちゃしてしまいうまく出力できませんでした。  
お手数をおかけしますがご教授お願い致します。

ソースコード

[code]

    package sample;
    
    public class Kadai5_7 {
    
        public static void main(String[] args) {
            //配列データの宣言・初期化
            int[] arrays1 = { 96, 45, 31, 29, 84, 77 };
            //並び替え前の配列内を表示
            display(arrays1, false);
            //昇順で並び替えを実施
            arraysSort(arrays1, true);
            //並び替え後の配列内を表示
            display(arrays1, true);
            //降順で並び替えを実施
            arraysSort(arrays1, false);
            //並び替え後の配列内を表示
            display(arrays1, true);
        }
    
        public static void arraysSort(int[] array, boolean orderType) {
            if (orderType == true) {
                for (int i = 0; i < array.length; i++) {
                    for (int j = i; j < array.length; j++) {
                        if (array[i] < array[j]) {
                            change(array, i, j);
                        }
                    }
                }
            } else {
                for (int i = 0; i < array.length; i++) {
                    for (int j = i; j < array.length; j++) {
                        if (array[i] > array[j]) {
                            change(array, i, j);
                        }
                    }
                }
            }
        }
    
        public static void display(int[] array, boolean isSorted) {
            if (isSorted == true) {
                System.out.println("****並び替え後****");
            } else {
                System.out.println("****並び替え前****");
                for (int i = 0; i < array.length; i++) {
                    System.out.print(array[i] + ",");
                }
            }
    
        }
    
        public static void change(int[] array, int i, int j) {
            int[] tmp = new int[array.length];
            tmp[i] = array[i];
            tmp[j] = array[j];
            array[i] = tmp[i];
            array[j] = tmp[j];
        }
    }
    
    
[/code]


CC BY-SA 4.0
2021-10-11T02:18:44.127
83000
2021-10-11T17:06:53.300
2021-10-11T08:54:23.137
3060
48303
question
java
配列の並び替えが上手くいかない。


並び替え前も並び替え後も「配列の要素を出力する」ことに変わりはないので、並び替え前と同じ処理が使えます。

[code]

        public static void display(int[] array, boolean isSorted) {
            if (isSorted == true) {
                System.out.println("****並び替え後****");
            } else {
                System.out.println("****並び替え前****");
            }
    
            // 配列の出力方法は並び替え前後で同じ
            for (int i = 0; i < array.length; i++) {
                System.out.print(array[i] + ",");
            }
            System.out.println();
        }
    
[/code]

* * *

質問内容からは逸れますが、おそらく出力結果は期待したものとは異なると思います(具体的には、「並び替え後」も並び替えられていない)。

これは、 `change` メソッドの入れ替え処理で実際には入れ替えできていないこと、`arraysSort`
メソッドでで昇順/降順判定が逆になっているのが原因です(ので出力処理の問題ではないです)。

* * *

(追記: タイトルを見返して、並び替え自体についても言及されていることに気付きました)

`change` メソッドで行いたいのは、配列の `i` 番目の要素と `j` 番目の要素の入れ替えだと思いますが、現在のコードではそれができていません。  
おそらく行いたいのは次のようなことだと思います:

[code]

        public static void change(int[] array, int i, int j) {
            int tmp = array[i];
            array[i] = array[j];
            array[j] = tmp;
        }
    
[/code]


CC BY-SA 4.0
2021-10-11T03:00:40.557
83001
2021-10-11T17:06:53.300
2021-10-11T17:06:53.300
2808
2808
83000
answer