相同的排序算法,相同的数组,但在排序相同的数组几次时给出不同的排序时间

时间:2015-02-02 15:17:35

标签: arrays algorithm sorting

我尝试下面的程序来检查相同的算法是否在同一个数组上运行几次,它会给出不同的排序持续时间。它返回不同的时间。这是为什么 ?我为所有尝试使用相同的数组。     包裹排序;

import java.util.Arrays;
import static sorting.CompareSorting.bubble_sort;
import static sorting.CompareSorting.generate_data;


public class Sorting {


public static void main(String [] args){

    int size = 10000;
    int [] arr = new int[size];
    int [] arr1 = new int[size];
    int [] arr2 = new int[size];
    long startTime;
    long endTime;

    arr = generate_data(size);

    System.arraycopy(arr, 0, arr1, 0, size);
    System.arraycopy(arr, 0, arr2, 0, size);

    System.out.println(Arrays.toString(arr));
    System.out.println(Arrays.toString(arr1));
    System.out.println(Arrays.toString(arr2));

    startTime = System.currentTimeMillis();
    bubble_sort(arr);
    endTime = System.currentTimeMillis();
    System.out.println("1st attempt " + (endTime - startTime));

    startTime = System.currentTimeMillis();
    bubble_sort(arr1);
    endTime = System.currentTimeMillis();
    System.out.println("2nd attempt " + (endTime - startTime));

    startTime = System.currentTimeMillis();
    bubble_sort(arr2);
    endTime = System.currentTimeMillis();
    System.out.println("3rd attempt " + (endTime - startTime));

    }
}

这是排序方法

static void bubble_sort(int [] data) { 

    int i,j,tmp;
    for(i = data.length ; i >= 0 ; i-- ){

        for(j = 0 ; j < data.length - 1 ; j++ ){

            if(data[j] > data[j + 1]){

                tmp = data[j];

                data[j] = data[j + 1];

                data[j + 1] = tmp;

            }

        }

    }

}

返回值: 第一次尝试438 第二次尝试359 第3次尝试297

1 个答案:

答案 0 :(得分:1)

Java使用JVM(Jav虚拟机)来运行我们用Java创建的应用程序。它在运行后优化代码。因此,当您尝试对数组进行三到四次排序时,它会优化代码,从而减少运行时间。 结帐ThisThis