二分查找

#pragma mark - 二分查找法/**

*  当数据量很大适宜采用该方法。

采用二分法查找时,数据需是排好序的。

基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段 中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。

*/

- (NSInteger)BinarySearch:(NSArray*)array target:(id)key{

NSInteger left =0;

NSInteger right = [array count] -1;

 NSInteger middle = [array count] /2;

while(right >= left) {                

middle = (right + left) /2;

if(array[middle] == key) {

return middle;                   

 }

if(array[middle] > key) {                        

right = middle -1;                    

}elseif(array[middle] < key) {                       

 left = middle +1;                    

}           

 }

return-1;

}

作者:才华惊动警方

链接:https://www.jianshu.com/p/28928b74fe48

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容