- public static int halfSearch(List<String> list,String key)
- {
- int max,min,mid;
- max = list.size()-1;
- min = 0;
- while(min<=max)
- {
- mid = (max+min)>>1;
- String str = list.get(mid);
- int num = str.compareTo(key);
- if(num>0)
- max = mid - 1;
- else if(num<0)
- min = mid + 1;
- else
- return mid;
- }
- return -min-1;
- }
复制代码 以上代码是模拟写的一个collections中的binarySearch方,最后返回的是插入位置的负数再减一。二分法在遍历到最后一个元素时不是mid,max,min三个变量指向一个元素吗,返回的插入位置能为max或者mid吗?
|