文档章节

Object-C代码练习【二分法查找】

TomatosX
 TomatosX
发布于 2014/09/30 16:17
字数 254
阅读 22
收藏 0
//
//  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


© 著作权归作者所有

共有 人打赏支持
TomatosX
粉丝 22
博文 207
码字总数 119547
作品 0
成都
iOS工程师
私信 提问
关于java向下类型转换的问题

在C:\Program Files\Java\jdk1.7.0\src\java\lang\String.java文档中有一下代码: public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanc......

沒有主角
2012/08/28
750
2
【objective-c】初次学习objective-c问题汇总... 【暂完,待修改错误】

---------------------------------------------------------------------------------------- 这本书,我已经看过两遍,那两遍都是在买mac pro之前看的,目的是...因为语法怪怪的很有趣。 ...

呢喃的猫咪
2013/06/26
0
2
Blender 源码学习--Operator

Blender 的 c 语言 api 与 python api 颇为相似。[感觉像Python的超级扩展] Mesh Subdivide 下面是对 blender 中的 mesh subdivide operator 代码的分析 Registration 首先我们需要在 wind...

openthings
2015/01/28
0
2
Javascript中DOM技术的的简单学习

第十四课 DOM技术概述 1:DOM概述   文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法。DOM 将HTML文档呈现为带有元素、属性和文本的树结构(节点树)。 DOM是一...

别叫小伙
2016/08/13
0
0
关东升的《从零开始学Swift》3月9日已经上架

大家一直期盼的《从零开始学Swift》于3月9日已经上架,它是关东升老师历时8个月的呕心沥血所编著,全书600多页,此本书基于Swift 2.x,通过大量案例全面介绍苹果平台的应用开发。全书共分5 部...

tony关东升
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

开源软件会被云杀死吗 ?

本文转载云头条,原作者:Michael Stiefel是Reliable Software公司的负责人,是一名软件架构和开发顾问。 文章要点 虽然开源开发不会消失,但商业开源厂商的未来不是很有希望。随着全面管理的...

linuxCool
39分钟前
2
0
OSChina 周三乱弹 —— 谈什么对象?睡什么觉?

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @胖达panda :最肯忘却古人诗,最不屑一顾是相思。分享童丽的单曲《红豆生南国》: 《红豆生南国》- 童丽 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
43分钟前
185
5
stylus

stylus基础教程,stylus实例教程,stylus语法总结

miaojiangmin
今天
5
0
PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
2
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部