package com.lrq;
import java.util.Arrays;
import javax.naming.BinaryRefAddr;
/**
*
* @author 李瑞琦
* 二分查找法的前提是这组序列得是有序的
*
*/
public class TestTwoPointSearch {
public static void main(String[] args) {
// 声明并赋值需要查找的数字
int searchNamber = 666;
// 声明一个20的数组
int[] nums = new int[20];
// 动态往数组里面存值
for (int i = 0; i < nums.length; i++) {
nums[i] = (int) (Math.random() * 1000);
}
// 排序
Arrays.sort(nums);
// 调用Array的toString方法控制台打印
// System.out.println(Arrays.toString(nums));
binarySearch(nums, searchNamber);
}
// 二分查找法的方法
public static int binarySearch(int[] nums, int searchNamber) {
// 定义数组的下标
int left = 0;
int right = nums.length - 1;
int middle = 0;
// while循环判断(前提是left<=right)
while (left <= right) {
middle = (left + right) / 2;
System.out.println(left + "\t" + right + "\t" + middle);
// 判断
if (nums[middle] > searchNamber) {
right = middle - 1;
} else if (nums[middle] < searchNamber) {
left = middle + 1;
} else {
return nums[middle];
}
}
return -1;
}
}
折半查找法(二分查找法)
最新推荐文章于 2024-10-02 09:00:00 发布