Object-C代码练习【二分法查找】
博客专区 > TomatosX 的博客 > 博客详情
Object-C代码练习【二分法查找】
TomatosX 发表于4年前
Object-C代码练习【二分法查找】
  • 发表于 4年前
  • 阅读 21
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】买域名送云解析+SSL证书+建站!>>>   

摘要: 二分法查找的objective-c实现。 需要注意的点:1、在二分法的实现中,用了NSInteger,没有用int类型,NSInteger的好处是不用考虑是32位还是64位。 2、将数字放进NSMutableArray中时需要将数字类型进行NSNumber类的包装。
//
//  main.m
//  BinarySearch
//
//  Created by on 14-9-30.
//  Copyright (c) 2014年 apple. All rights reserved.
//

//二分法查找
#import <Foundation/Foundation.h>
#import "BinarySearch.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithCapacity:10];
        for (int i = 10; i < 50; i++) {
            [mutableArray addObject:[NSNumber numberWithInteger:i]];
        }
        
        BinarySearch *binarySearch = [[BinarySearch alloc] init];
        NSLog(@"%ld", (long)[binarySearch binarySearchIndex:[NSNumber numberWithInteger:33] arrayBySearch:mutableArray]);
    }
    return 0;
}
//
//  BinarySearch.h
//  BinarySearch
//
//  Created by on 14-9-30.
//  Copyright (c) 2014年 apple. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface BinarySearch : NSObject

- (NSInteger) binarySearchIndex: (NSNumber *) key arrayBySearch: (NSMutableArray *) mutableArray;

@end
//
//  BinarySearch.m
//  BinarySearch
//
//  Created by on 14-9-30.
//  Copyright (c) 2014年 apple. All rights reserved.
//

#import "BinarySearch.h"

@implementation BinarySearch

- (NSInteger) binarySearchIndex: (NSNumber *) key arrayBySearch: (NSMutableArray *) mutableArray {
    NSInteger min = 0;
    NSInteger max = (NSInteger)([mutableArray count] - 1);
    
    while (min <= max) {
        NSInteger mid = (min + max) / 2;
        
        if (key > [mutableArray objectAtIndex:mid]) {
            min = mid + 1;
        } else if (key < [mutableArray objectAtIndex:mid]) {
            max = mid - 1;
        } else if (key == [mutableArray objectAtIndex:mid]) {
            return mid;
        }
    }
    return -1;
} // binarySearchIndex

@end


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 22
博文 143
码字总数 119547
×
TomatosX
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: