2025-01-18 二分查找法
This commit is contained in:
parent
cfe2400088
commit
4c54be5bfc
47
src/dataANDcalc/java/Search/BinarySearch.java
Normal file
47
src/dataANDcalc/java/Search/BinarySearch.java
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
package Search;
|
||||||
|
|
||||||
|
import SortAlgori.MergeSort;
|
||||||
|
|
||||||
|
public class BinarySearch {
|
||||||
|
|
||||||
|
private int[] arr;
|
||||||
|
|
||||||
|
public BinarySearch(int[] arr){
|
||||||
|
this.arr = arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int search(int left, int right, int value){
|
||||||
|
int index = -1;
|
||||||
|
if(left >= right){
|
||||||
|
if(arr[left] == value){
|
||||||
|
return left;
|
||||||
|
}
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
int mid = (left + right)/2;
|
||||||
|
if(value == arr[mid]){
|
||||||
|
return mid;
|
||||||
|
}
|
||||||
|
if(value > arr[mid]){
|
||||||
|
index = search(mid + 1, right, value);
|
||||||
|
}
|
||||||
|
if(value < arr[mid]){
|
||||||
|
index = search(left, mid - 1, value);
|
||||||
|
}
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
int[] arr = new int[]{1,9,11,-1,34,89,23,53,124,52};
|
||||||
|
MergeSort mergeSort = new MergeSort(arr);
|
||||||
|
mergeSort.mergeSort(0, arr.length-1);
|
||||||
|
System.out.println("排序后的序列:");
|
||||||
|
mergeSort.show();
|
||||||
|
BinarySearch binarySearch = new BinarySearch(mergeSort.getArr());
|
||||||
|
long startTime = System.currentTimeMillis();
|
||||||
|
int search = binarySearch.search(0, arr.length-1, 124);
|
||||||
|
long endTime = System.currentTimeMillis();
|
||||||
|
System.out.println("查找到的下标是:" + search);
|
||||||
|
System.out.println("查找所花费的时间:" + (endTime - startTime) + "ms");
|
||||||
|
}
|
||||||
|
}
|
@ -6,6 +6,14 @@ public class MergeSort {
|
|||||||
|
|
||||||
private int[] temp;
|
private int[] temp;
|
||||||
|
|
||||||
|
public int[] getArr() {
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setArr(int[] arr) {
|
||||||
|
this.arr = arr;
|
||||||
|
}
|
||||||
|
|
||||||
public MergeSort(int[] arr){
|
public MergeSort(int[] arr){
|
||||||
this.arr = arr;
|
this.arr = arr;
|
||||||
// this.arr = new int[]{8,4,5,7,1,3,6,2};
|
// this.arr = new int[]{8,4,5,7,1,3,6,2};
|
||||||
|
Loading…
Reference in New Issue
Block a user