0

10000個の一意の値を順番に並べ替えるバブルソートプログラムを作成しました。

プログラムを実行しましたが、出力が表示されますが、出力が正しく表示されないようです。

コードは次のとおりです。

public class BubbleSort {
    public static void main(String[] args) {
        int BubArray[] = new int[]{#here are 10000 integers#};
        System.out.println("Array Before Bubble Sort");
            for(int a = 0; a < BubArray.length; a++){
                 System.out.print(BubArray[a] + " ");
            }

            double timeTaken = bubbleSortTimeTaken(BubArray);
                 bubbleSort(BubArray);
            System.out.println("");               
            System.out.println("Array After Bubble Sort");
            for(int a = 0; a < BubArray.length; a++){
        System.out.println("    Time taken for Sort : " + timeTaken + " milliseconds.");
                System.out.print(BubArray[a] + " ");
            }
    }

private static void bubbleSort(int[] BubArray) {

            int z = BubArray.length;
            int temp = 0;

            for(int a = 0; a < z; a++){
                    for(int x=1; x < (z-a); x++){

                            if(BubArray[x-1] > BubArray[x]){

                                    temp = BubArray[x-1];
                                    BubArray[x-1] = BubArray[x];
                                    BubArray[x] = temp;

                            }      
                    }
            }
    }
public static double bubbleSortTimeTaken(int[] BubArray) {
    long startTime = System.nanoTime();
        bubbleSort(BubArray);
    long timeTaken = System.nanoTime() - startTime;
    return timeTaken;
    }
}

コードはスムーズに実行され、エラーは発生しませんが、これは私が受け取る出力です。

Array Before Bubble Sort
#10000 integers randomly#
Array After Bubble Sort
Time taken for Sort : 1.0114869E7 milliseconds.
10  Time taken for Sort : 1.0114869E7 milliseconds.
11  Time taken for Sort : 1.0114869E7 milliseconds.
17  Time taken for Sort : 1.0114869E7 milliseconds.
24  Time taken for Sort : 1.0114869E7 milliseconds.
35  Time taken for Sort : 1.0114869E7 milliseconds.
53  Time taken for Sort : 1.0114869E7 milliseconds.

....

14940   Time taken for Sort : 1.0114869E7 milliseconds.
14952   Time taken for Sort : 1.0114869E7 milliseconds.
14957   Time taken for Sort : 1.0114869E7 milliseconds.
14958   Time taken for Sort : 1.0114869E7 milliseconds.
14994   Time taken for Sort : 1.0114869E7 milliseconds.
14997   Time taken for Sort : 1.0114869E7 milliseconds.
BUILD SUCCESSFUL (total time: 1 second)

1.0114869E7ミリ秒はプログラム全体で実行され、出力は私がやろうとしているものとは異なりますが、見た目は同じです。プログラムの実行にかかった時間と各ソート時間を出力したいと思います。

〜これが理にかなっていることを願っています。助けていただければ幸いです、ありがとう。

4

1 に答える 1

1

これを出力したいかもしれません。はループのsysout前にある必要があります。for

System.out.println( "並べ替えにかかる時間:" + timeTaken + "ミリ秒。"); for(int a = 0; a <BubArray.length; a ++){System.out.print(BubArray [a] + ""); }

配列はすでに並べ替えられており、後でforループに表示します。出力が表示される時間は、次の方法で計算されているバブルソート(約)にかかった合計時間です。

public static double bubbleSortTimeTaken(int[] BubArray) {
    long startTime = System.nanoTime();
    bubbleSort(BubArray);
    long timeTaken = System.nanoTime() - startTime;
    return timeTaken;
    }
}

だから、それは合計時間です。

于 2012-12-06T08:48:55.043 に答える