public class BinarySearch3
{
public static void main(String[] args)
{
int array[] = {1, 3, 5, 7, 9, 9, 9, 9, 21, 33};
List<Integer> list = BinarySearch3.search(array, 9);
System.out.println(list);
}
public static List<Integer> search(int array[], int find)
{
int left = 0;
int right = array.length - 1;
List<Integer> list = new ArrayList<>();
while (left <= right)
{
int mid = (right + left) / 2;
if (find > array[mid])
{
left = mid + 1;
} else if (find < array[mid])
{
right = mid - 1;
} else
{
int temp = mid - 1;
while (temp >= 0 && array[temp] == find)
{
list.add(temp);
temp--;
}
list.add(mid);
temp = mid + 1;
while (temp < array.length && array[temp] == find)
{
list.add(temp);
temp++;
}
return list;
}
}
return new ArrayList<Integer>();
}
}
二分查找非递归
最新推荐文章于 2023-07-21 16:17:02 发布