查找——折半查找(二分查找、二叉搜索)
简单的折半查找方法
public static int binSearch(int[] arr, int first ,int last, int target)
{
int mid;
int midValue;
while(first < last){
mid = (first + last) / 2;
midValue = arr[mid];
if(target == midValue){
return mid;
}else if(target < midValue){
last = mid;
}else{
first = mid;
}
}
return -1;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
泛型二叉搜索方法
public static <T> extends Comparable<? super T>
int binSearch(T[] arr, int first, int last, T target)
{
int mid;
T midValue;
while(first < last){
mid = (first + last) / 2;
midValue = arr[mid];
if(target.compareTo(midValue) == 0){
return mid;
}else if(target.compareTo(midValue) < 0){
last = mid;
}else{
first = mid;
}
}
return -1;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20