查找算法

作者: 奔跑吧李博 | 来源:发表于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