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

直接上代码:

import java.text.MessageFormat;

public class AppTest {
    static int length = 70000000;
    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(MessageFormat.format("目标数据:{0}\t二分法耗时:{1}\t普通方法耗时:{2}\t二分法结果:{3}\t普通方法结果:{4}", 
                                                            target, time_f1, time_f2, index_f1, 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 middle;
        } 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;
    }

}  

查找结果:

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

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

    原文作者:查找算法
    原文地址: https://blog.csdn.net/after95/article/details/74908662
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞