很多人写二分搜索的时候,都会存在一些纰漏,前段时间看到代码之美里面有一段程序,总结了二分搜索
package com.algorithms.binsearch; public class BinSearch { // expert experience, absolute right ! public static int find(String[] keys, String target) { int high = keys.length; int low = -1; while (high - low > 1) { int probe = (high + low) >>> 1; //avoid overflow if (keys[probe].compareTo(target) > 0) { high = probe; } else low = probe; } //why not break in while loop ? if (low == -1 && keys[low].compareTo(target) != 0) return -1; else return low; } }