我正在尝试测试java中大型排序数组的二进制搜索的时间效率。
这是我正在使用的二进制搜索方法,它接收搜索键和数组。
p = p.astype(int)
我认为以编程方式创建数组可能会导致效率上升。因此,我试图将大型数组初始化为常量,并在程序中使用它。
我尝试了Array和ArrayList,如下所示。
public int binarySearch(int[] a, int k) {
int l = 0;
int r = a.length - 1;
int m = 0;
while (l <= r) {
m = (l+r)/2;
if (k == a[m]) {
return m;
}
else if (k < a[m]) {
r = m - 1;
}
else {
l = m + 1;
}
}
return -1;
}
我收到以下编译错误,因为数组太大。
public static int D10000[] = {0, 1, 2, 3, ..... 10000};
public static ArrayList<Integer> D10000 = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5, ...... 10000);
实现这一目标的最佳方法是什么?