查找-二分查找(折半查找)
程序员文章站
2022-03-14 20:35:38
...
前提要求:
- 采用顺序表存储
- 元素有序排序列
// 非递归二分查找
public int binarySearch(int[] a, int target) {
int l = 0, h = a.length - 1;
while (l <= h) {
int mid = (l + h) / 2;
if (a[mid] == target) return mid;
else if (a[mid] < target) l = mid + 1;
else h = mid - 1;
}
return -1;
}
// 递归二分
public int binarySearch(int[] a, int l, int h, int t) {
// 递归出口
if (t < a[l] || t > a[h] || l > h) return -1;
int mid = (l + h) / 2;
if (a[mid] == t) return mid;
else if (a[mid] < t) {
l = mid + 1;
return binarySearch(a, l, h, t);
} else {
h = mid - 1;
return binarySearch(a, l, h, t);
}
}
上一篇: 数据结构与算法python版(3)-列表顺序查找和二分查找(折半查找)
下一篇: 折半(二分)查找