吴文杰的个人github博客

二分查找



/**
* @program:
* @description:
* @author: Jay
* @create: 2020-09-21 19:17
**/
public class TwoSearch {
/**
* 不使用递归的二分查找
* title:commonBinarySearch
*
* @param arr
* @param key
* @return 关键字位置
*/
public static int commonBinarySearch(int[] arr, int key) {
int low = 0;
int high = arr.length - 1;
int middle = 0; //定义middle

if (key < arr[low] || key > arr[high] || low > high) {
return -1;
}

while (low <= high) {
middle = (low + high) / 2;
if (arr[middle] > key) {
//比关键字大则关键字在左区域
high = middle - 1;
} else if (arr[middle] < key) {
//比关键字小则关键字在右区域
low = middle + 1;
} else {
return middle;
}
}

return -1; //最后仍然没有找到,则返回-1
}

public static void main(String[] args) {

int[] arr = {1, 3, 5, 7, 9, 11};
int key = 5;
//int position = recursionBinarySearch(arr,key,0,arr.length - 1);

int position = commonBinarySearch(arr, key);

if (position == -1) {
System.out.println("查找的是" + key + ",序列中没有该数!");
} else {
System.out.println("查找的是" + key + ",找到位置为:" + position);
}

}

}
posted @ 2020-09-21 19:21  我是2货呀  阅读(223)  评论(0编辑  收藏  举报
Live2D