*先说现象:
在一个整形数组,
使用二分法找大于整数k的第一个数时,可以用k+0.5来找
同理找等于整数k的第一个数时,可以用k-0.5来找
其实很好理解,二分法找的是插入这个数字的位置,如果这个数字存在,对于他插入到相同数字序列中的哪个位置是不可预知的。
而取在数的中间,得到的值,是这个数应该存在的位置,而占住这个位置的数以及其之后的数应该往后移(因为数组没有这个数字k+0.5或者k-0.5,所以不用考虑相同数字序列中的位置)。
*结论:
二分查找时,要找某个位置,可以用某个位于单位之间的数进行二分查找,这样就可以找到此数如果存在,应存在的位置。
NK网上面的题
统计一个数字在排序数组中出现的次数。
public int GetNumberOfK(int [] array , int k){
}
答案
看见有序,就知道是二分查找了
因为是整形数组,所以就可以借