问题描述
在程序设计中经常会遇到这样一个问题,即在一个32位整数中,从右到左寻找第一个为1的位。这样的问题是很常见的,而面对这样一个问题,一种常见的解法就是逐位的遍历这个整数中的所有位,直到遇到了为1的位。若第一个为1的位出现在高位区域,逐位查找比较的方法会比较非时间。
换一种思路
当我们在一个数组中寻找某数的时候,我们有什么办法?简单的顺序的遍历整个数组的思想是可行的,这样的时间复杂度是o(n)。若数组是一个有序的数组呢?我们一般会采用2分查找的方式在一个数组中寻找某数,这样找起来就比较快了,时间复杂度是o(logn)。那在一个32位的int中寻找第一个为1的数,能否使用2分查找法呢?