哨兵算法
- (NSInteger)searchItemFromArray:(NSArray *)array item:(NSString *)item{
NSMutableArray *muArray = array.mutableCopy;
if(muArray == nil || muArray.count <= 0){
return -1;
}
NSInteger index = muArray.count - 1;
NSString *firstItem = [muArray firstObject];
if(firstItem == item){
//如果第一个元素等于查找值,直接返回
return 0;
}
//把要查找的值放在数组的第一位上,作为【标兵】
muArray[0] = item;
while (muArray[index] != item) {
index --;
}
//查找结束,把数组的首位元素改回来
muArray[0] = firstItem;
return index > 0 ? index : -1;
}