#pragma mark - 二分查找法/**
*? 當(dāng)數(shù)據(jù)量很大適宜采用該方法。
采用二分法查找時男摧,數(shù)據(jù)需是排好序的渠羞。
基本思想:假設(shè)數(shù)據(jù)是按升序排序的,對于給定值x篡帕,從序列的中間位置開始比較绩社,如果當(dāng)前位置值等于x,則查找成功赂苗;若x小于當(dāng)前位置值愉耙,則在數(shù)列的前半段 中查找;若x大于當(dāng)前位置值則在數(shù)列的后半段中繼續(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;
}
作者:才華驚動警方
鏈接:http://www.reibang.com/p/28928b74fe48
來源:簡書
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。