二分
忽然发现自己并写不对二分……先贴个知乎链接。
正如最高位答主所言——“有多少种写法都不重要,重要的是要会写一种对的。”
怎么写一种对的二分查找呢?
首先,我们要保证程序不会死循环。因此,当我们分开区间时,要保证区间被正好分成两半。例如,如果当前区间长度为2,就必须把区间分成两个长度为1的子区间。
其次我们要知道如果mid处的值能取到,应该跳到左边还是右边的区间中。
忽然发现自己并写不对二分……先贴个知乎链接。
正如最高位答主所言——“有多少种写法都不重要,重要的是要会写一种对的。”
怎么写一种对的二分查找呢?
首先,我们要保证程序不会死循环。因此,当我们分开区间时,要保证区间被正好分成两半。例如,如果当前区间长度为2,就必须把区间分成两个长度为1的子区间。
其次我们要知道如果mid处的值能取到,应该跳到左边还是右边的区间中。