2025-01-25 二分查找法
This commit is contained in:
parent
b0b505b5f4
commit
87a3082356
45
src/dataANDcalc/java/algorithm/BinarySearch.java
Normal file
45
src/dataANDcalc/java/algorithm/BinarySearch.java
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
package algorithm;
|
||||||
|
|
||||||
|
import SortAlgori.MergeSort;
|
||||||
|
|
||||||
|
public class BinarySearch {
|
||||||
|
|
||||||
|
private int[] arr;
|
||||||
|
|
||||||
|
public BinarySearch(int[] arr){
|
||||||
|
this.arr = arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 非递归实现
|
||||||
|
* @param target
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private int search(int target){
|
||||||
|
int left = 0;
|
||||||
|
int right = arr.length - 1;
|
||||||
|
while(left <= right){
|
||||||
|
int mid = (left + right)/2;
|
||||||
|
if(target == arr[mid]){
|
||||||
|
return mid;
|
||||||
|
}
|
||||||
|
if(target < arr[mid]){
|
||||||
|
right = mid - 1;
|
||||||
|
}
|
||||||
|
if(target > arr[mid]){
|
||||||
|
left = mid + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
int[] arr = new int[]{1,3,8,10,11,67,100};
|
||||||
|
BinarySearch binarySearch = new BinarySearch(arr);
|
||||||
|
long startTime = System.currentTimeMillis();
|
||||||
|
int search = binarySearch.search(100);
|
||||||
|
long endTime = System.currentTimeMillis();
|
||||||
|
System.out.println("查找到的下标是:" + search);
|
||||||
|
System.out.println("查找所花费的时间:" + (endTime - startTime) + "ms");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user