1700444720
1700444721
private static<T>int indexedBinarySearch(List<?extends Comparable<?super T>>
1700444722
1700444723
list, T key){
1700444724
1700444725
//默认上界
1700444726
1700444727
int low=0;
1700444728
1700444729
//默认下界
1700444730
1700444731
int high=list.size()-1;
1700444732
1700444733
while(low<=high){
1700444734
1700444735
//中间索引,无符号右移1位
1700444736
1700444737
int mid=(low+high)>>>1;
1700444738
1700444739
//中间值
1700444740
1700444741
Comparable<?super T>midVal=list.get(mid);
1700444742
1700444743
//比较中间值
1700444744
1700444745
int cmp=midVal.compareTo(key);
1700444746
1700444747
//重置上界和下界
1700444748
1700444749
if(cmp<0)
1700444750
1700444751
low=mid+1;
1700444752
1700444753
else if(cmp>0)
1700444754
1700444755
high=mid-1;
1700444756
1700444757
else
1700444758
1700444759
//找到元素
1700444760
1700444761
return mid;
1700444762
1700444763
}
1700444764
1700444765
//没有找到,返回负值
1700444766
1700444767
return-(low+1);
1700444768
1700444769
}
[
上一页 ]
[ :1.70044472e+09 ]
[
下一页 ]