查找算法

作者: 奔跑吧李博 | 来源:发表于2018-11-24 03:54 被阅读24次
顺序查找

代码很简单,循环比较即可。

    public static int search(int[] array, int num) {
        int position = -1;
        for (int i = 0; i < array.length; i++) {
            if (array[i] == num) {
                return i;
            }
        }
        return position;
    }
折半查找
前提:必须是有序的数据。

基本思想:把一个有序的数据一份为二。然后判断是比目标数据大了还是小了,如果小了往左边的部分找;如果大了往右边的数据找。确定了找的方向后再次把数据一分为二,继续上面的步骤直到找到为止。这里的重复执行就用递归思想。

    public static void binerySearch(int[] array, int start, int end, int num) {
        int position = -1;
        int middle = (start + end) / 2;
        if (array[middle] == num) {
            System.out.print("找到第" + middle + "个位置");
        } else if (array[middle] > num) {
            binerySearch(array, start, middle - 1, num);
        } else if (array[middle] < num) {
            binerySearch(array, middle + 1, end, num);
        }
    }

方法测试:

    public static void main(String[] args) {
        int[] array = new int[]{7, -3, 0, 20, 8, 9};

        int position = search(array, 20);
        if (position == -1) {
            System.out.println("没有找到该数");
        } else {
            System.out.println("找到第" + position + "个位置");
        }

        int[] array2 = new int[]{-2,5,10,16,87,99};
        binerySearch(array2,0,array2.length,10);
    }

相关文章

网友评论

    本文标题:查找算法

    本文链接:https://www.haomeiwen.com/subject/qwaixftx.html