二分查找 遇到的难题,如何用二分查找搜索重复的元素

假设有一个数组int array[10]={5,1,3,4,6,7,8,9,1,1};而且已经排序了
但是我用二分只能查出一个 ,我想一次把全部为1的元素找出,该怎么做呢?

先用二分,找到位置
再两面扩展就可以了

 假设你用 int index = binsearch(arr, find) 找到了下标。
那么用
int index1, index2;
index1 = index2 = index;
while (arr[index1--] == find);
while (arr[index2++] == find);
则index1+1 到 index2 - 1 都是你需要的。