二分查找
public static int get(int key, int[] a) {
int lo = 0, hi = a.length - 1;
while (lo <= hi) {
int mid = lo + (hi - lo) / 2;
if (key < a[mid]) {
hi = mid - 1;
}
else if (key > a[mid]) {
lo = mid + 1;
}
else {
return mid;
}
}
return -1;
}
二叉搜索树查找
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
public static get(TreeNode root, int val) {
TreeNode node = null, cur = root;
while (cur != null) {
if (val > cur.val) {
cur = cur.right;
}
else if (val < cur.val) {
cur = cur.left;
}
else {
node = cur;
break;
}
}
return node;
}