1

バブル ソートが配列内のすべての要素をソートするのにかかった時間を確認できるようにしたいと考えています。時間はどうやって測るの?

public class Bubble {
    static int[] nums = {5, 4, 3, 2, 1}; 

    public static void main(String[] args) {
        bubble(nums);
        for(int i=0; i<nums.length; i++){
            System.out.print(nums[i] + " ");
        }
    }

    // bubble sort
    public static void bubble(int[] unsorted){
        int temp;
        boolean sorted = false;
        int length = unsorted.length;

        while(!sorted){
            sorted = true;

            for(int i=0; i<length-1; i++){
                if(unsorted[i] > unsorted[i+1]){
                    temp = unsorted[i];
                    unsorted[i] = unsorted[i+1];
                    unsorted[i+1] = temp;
                    sorted = false;
                }
            }
        }
    }
}
4

5 に答える 5

0

このコードを使用できます:

public static void main(String[] args) {
    long t1 = System.nanoTime();
    bubble(nums);
    for(int i=0; i<nums.length; i++){
        System.out.print(nums[i] + " ");
    }
    long t = (System.nanoTime() - t1) / 1000000;
    System.out.println("Elapsed time = " + t + " ms");

}

0ms と表示されます。これは、配列が小さすぎるためです。もっとたくさんのアイテムで試してみてください。複雑さは O(n²) です。

編集: 分割せずに nanoTime を使用できますが、私たちのコンピューターは 1ms 未満の時間を測定することができません。したがって、測定値は正しくありません。1000、2000、3000など、より多くの要素で測定する方が良い

于 2013-04-19T19:54:46.443 に答える
0
public static void main(String[] args) {
   Date startTime = new Date();
   bubble(nums);
   System.out.println(new Date().getTime() - startTime.getTime());
   for(int i=0; i<nums.length; i++){
       System.out.print(nums[i] + " ");
   }
}
于 2013-04-19T19:54:52.743 に答える
0

地殻変動の答えから、java でメソッドの実行のタイミングを計るには:

常に昔ながらの方法があります。

long startTime = System.nanoTime();
methodToTime();
long endTime = System.nanoTime();

long duration = endTime - startTime;
于 2013-04-19T19:52:16.353 に答える