关于个人笔记梳理---仅供参考
基础数据结构----二分查找
public class BinarySearch {
/*二分查找基础版
params:a-待查找的升序数组
target-待查找的目标值
returns:找不到则返回索引
找不到返回-1
*/
public static int binarySearchBasic(int[] a, int target) {
int i = 0, j = a.length - 1;//设计指针和初值
while (i <= j) {//i~j范围内有东西
int m = (i + j) / 2;
if (target < a[m]) {//目标在左边
j = m - 1;
} else if (a[m] < target) {//目标在右边
i = m + 1;
} else {//找到了
return m;
}
}
return -1;
}
}
/*
W1:为什么是i<=j,意味着区间内有为比较的元素,而不是i<j
i==j意味着i,j它们指向的元素也会参与比较
i<j只意味着m指向的元素参与比较
W2:
*/