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