import java.util.Scanner;
import java.util.Arrays;
public class ex7_16 {
public static void main(String [] args){
int [] list = new int[60000000];
for (int i = 0 ;i
list[i] = i;
}
int key = (int)(Math.random()*60000001);
System.out.println(key);
System.out.println();
// for (int i = 0 ; i <100;i++){
// System.out.print(list[i]+" ");
// }
long startTime = System.currentTimeMillis();
int index = linearSearch(list,key);
System.out.println(index);
long endTime = System.currentTimeMillis();
long executionTime = endTime - startTime;
System.out.println(executionTime);
Arrays.sort(list);
startTime = System.currentTimeMillis();
index = binarySearch(list,key);
System.out.println(index);
endTime = System.currentTimeMillis();
executionTime = endTime - startTime;
System.out.println(executionTime);
}
public static int linearSearch(int[] list, int key){
for (int i = 0 ; i
if (list[i] == key){
return i;
}
}
return -1;
}
public static int binarySearch(int[] list, int key){
int low = 0;
int high = list.length - 1;
while (high >= low){
int mid = (low + high )/2;
if (key < list[mid]){
high = mid-1;
}else if (key == list[mid]){
return mid;
}else{
low = mid + 1;
}
}
return -low-1;
}
}
在stackoverflow上面搜了半天,才发现是CPU运行的太快太快了。。。所以在后面狂加n个0才能看出差别,也可以用System#nanoTime();