热门

最新

红包

立Flag

投票

同城

我的

发布
u011646541
bbjjhh666
4 年前
trueu011646541

IOS查找算法之二分查找
注意点:1)数组,2)有序,3)太大和太小都不行

- (NSInteger)gly_bsearchWithLoop:(NSString *)propertyName value:(double)value
{
NSInteger low = 0;
NSInteger high = self.count - 1;

while (low <= high)
{
//为什么不写(low + high) / 2,是因为如果 low 和 high 比较大的话,两者之和就有可能会溢出。
NSInteger mid = low + ((high - low) >> 1);
double middleNumber = [[self[mid] valueForKey:propertyName] doubleValue];
if ([@(middleNumber) compare:@(value)] == NSOrderedSame)
{
return mid;
}
else if ([@(middleNumber) compare:@(value)] == NSOrderedAscending)
{
low = mid + 1;
}
else
{
high = mid - 1;
}
}

return -1;
}

CSDN App 扫码分享
分享
评论
点赞
打赏
  • 复制链接
  • 举报
下一条:
嘿嘿前几天看自己才破40粉今天康了一康发现自己88粉了吼吼!哈哈!嘿嘿!(成猴了)向100粉进军!!加油!!
立即登录