标签:highlight target nbsp rgba 时间 arch 数字 ret search
条件:
数组有序
每次查找都跟数组中间位置数字比较大小,如果要找的数字比中间位置的数字小,那查找就从【0,中间位置的下标前一个位置】这个范围查找;如果要找的数字比中间位置的数字大,那查找的范围就变成【中间位置下标的下一个位置,最大位置】。如果要找的数字正好等于中间位置上的数字,那就找到了;
时间复杂度:查找次数 = log2 ^N;
最好的情况一次就找到,最差的情况,数字在边边上,每次都缩小一半的范围去找target
int search(int* nums, int numsSize, int target){ int low =0; int high = numsSize-1; int mid = (low + high)/2; while(low < high) { if(target > nums[mid]) { low = mid +1; } else if(target < nums[mid]) { high = mid-1; } else{ return mid; } mid = (low + high)/2;//要记得更新,否则就死循环了 } if(nums[low] == target) { return low; } return -1; }
标签:highlight target nbsp rgba 时间 arch 数字 ret search
原文地址:https://www.cnblogs.com/8335IT/p/14814795.html