一、题目
给定一个有序数组,在这个数组中找到大于等于某个数的最左位置。如给定一个数组:
找到大于等于7的最左位置为4。
二、思路
2.1 暴力破解
当然,最简单,最不用动脑子的思路就是给数组循环一遍,找到第一个大于等于给定的数之后,直接给它返回出来即可。
2.2 二分查找
说了不动脑子的,那再看看动脑子的办法,二分查找怎么找。如下图:
从上图可以看出,这与二分查找某个值是否存在即有相同又有不同。相同之处都是采用了二分查找,即每一次丢掉一半不符合逻辑的数组。不同之处在于,查找某个值是否存在,找到了就立即返回,而查找大于等于某个数的最左位置,是一定会找到底,会把数组彻底二分完。
三、代码
public class Main
{
public static void main (String[] args)
{
int[] sortedArr