顺序查找
代码很简单,循环比较即可。
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);
}
网友评论