二分法查找和原始算法查找效率对比

来源:互联网 发布:淘宝网秒杀购物 编辑:程序博客网 时间:2024/06/05 03:43



直接上代码:

public class AppTest {static int length = 700000000;static int[] array = new int[length];static {for (int i = 0; i < length; i++) {array[i] = i;}}public static void main(String[] args) {for (int i = 0; i < 10; i++) {int target = (int) (Math.random() * length * 2);long start_f1 = System.currentTimeMillis();int index_f1 = findIndex(array, target);long end_f1 = System.currentTimeMillis();long time_f1 = end_f1 - start_f1;long start_f2 = System.currentTimeMillis();int index_f2 = findIndexByFor(array, target);long end_f2 = System.currentTimeMillis();long time_f2 = end_f2 - start_f2;System.out.println("目标数据:" + target + "二分法耗时:" + time_f1+ "二分法结果:" + index_f1 + "普通方法耗时:" + time_f2+ "普通方法结果:" + index_f2);}}public static int findIndex(int[] arr, int target) {return findIndex(arr, 0, arr.length, target);}public static int findIndex(int[] arr, int start, int end, int target) {int middle = (start + end) / 2;if (target == arr[middle]) {return -1;} else if (start > end || target < arr[0]|| target > arr[arr.length - 1]) {return -1;} else if (target < arr[middle]) {return findIndex(arr, start, middle - 1, target);} else if (target > arr[middle]) {return findIndex(arr, middle + 1, end, target);}return -1;}public static int findIndexByFor(int[] arr, int target) {int index = 0;for (int i : arr) {if (i == target) {return index;}index++;}return -1;}}

查找结果:



总结:总结过我们可以看出,二分法查找几乎是不耗时,所以方法是很重要的

原创粉丝点击