# 7.1 二分查找算法(非递归) #### 一 . 二分查找算法 二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找 二分查找法的运行时间为对数时间O(㏒₂n) ,即查找到需要的目标位置最多只需要㏒₂n步,假设从\[0,99\]的队列(100个数,即n=100)中寻到目标数30,则需要查找步数为㏒₂100 , 即最多需要查找7次( 2\^6 \< 100 \< 2\^7) #### 二. 代码实现 \`\`\`java public class BinarySearchNoRecur { public static void main(String\[\] args) { //测试 int\[\] arr = {1,3, 8, 10, 11, 67, 100}; int index = binarySearch(arr, 100); System.out.println("index=" + index);// } /\*\* \* 二分查找的非递归实现 \* @param arr 待查找的数组, arr是升序排序 \* @param target 需要查找的数 \* @return 返回对应下标,-1表示没有找到 \*/ public static int binarySearch(int\[\] arr, int target) { int left = 0; int right = arr.length - 1; while(left \<= right) { //说明继续查找 int mid = (left + right) / 2; if(arr\[mid\] == target) { return mid; } else if ( arr\[mid\] \> target) { right = mid - 1;//需要向左边查找 } else { left = mid + 1; //需要向右边查找 } } return -1; } } \`\`\`