1. 题目描述
2. 解法1-暴力解法
用for循环,因为数组是排序的,所以只要遇到与目标值相等的,或者比目标值大的,就可以立即返回该元素的下标值。就是搜索插入位置。
3. 解法2-二分法
就多数据而言,二分法效率更加明显。本解法就是,不断与中间值相比较,不断缩小判断范围,直至得出结果。
首先使left=0,right=数组长度-1,进入while循环,条件是left<=right。进入循环后,先计算中间下标,把目标值与中间下标的元素相比,如果小于,right等于中间下标-1 ,如果大于,left等于中间下标+1,如果相等则返回中间下标值,即搜索插入位置。如果循环结束,还没得出结果,则表明该元素不在数组内,有两种可能,一种是目标值比数组所有元素都小,则应该在的位置是0,此时left一直是0。一种是目标值比数组所有元素都大,则应该在的位置是数组最后一个元素的后面,此时left指向的就是这个位置,因为在跳出循环前,left从最后一个元素的下标加了1。因此如果循环中没有找到,则直接返回left。