美文网首页程序员iOS Developer
OC版-二分查找代码书写

OC版-二分查找代码书写

作者: KennyHito | 来源:发表于2017-02-21 09:46 被阅读168次
个人链接
微信公众号.jpg
功能部分:</br>

二分查找(也称折半查找)是很常见的一种在数组中查找数据的算法,作为一名程序员是应该必须会的。它的基础思想:获取数组的中间值,将数组分割成两份,利用中间值跟指定的值进行比较,如果中间值大于指定的值,就在数组的左边进行查找;如果中间值小于指定值,就在数组的右边进行查找。如此循环的执行下去,最终找到符合的值。

二分查找优点:
1.速度快 2.比较次数少 3.性能好

当然了,

缺点也很明显:
1.必须是一个有序的数组(升序或者降序)
2.适用范围:适用不经常变动的数组

代码如下:</br>
- (void)viewDidLoad {
    [super viewDidLoad];
    NSArray * array1 = @[@3,@7,@9,@14,@25,@26,@37,@69];
    int result = [self compare:array1 target:@26];//在这里打印结果看是否有相等的值
    NSLog(@"%d",result);
}

- (int)compare:(NSArray *)array target:(int)target{
    
    if (!array.count) {
        return -1;//数组无元素,返回-1;
    }
    
   int low = 0;//数组起始元素下标
   int high = array.count - 1;//数组最后元素的下标
    
    while (low <= high) {
        //会有一些朋友看到有些人是( low + high ) / 2这样写的,但是这样写有一点不好,就是low+high会出现整数溢出的情况,如果存在溢出,你再除以2也是没有用的,所以不能这么写
        int mid = low + ((high - low)/2);
        
        //第mid项的内容
        int num = [array objectAtIndex:mid];
        
        if (target == num) {
            return low;
        }else if (num > target){
            high = mid - 1;//左边进行查找
        }else{
            low = mid +1;//右边进行查找
        }
    }
    return -1;//数组中不存该数,返回-1;
}

声明

  • 所有文章出自 Kenny Hito 的博客 !
  • 未经本人允许不得转载, 转载请标明来源与作者, 谢谢合作!

相关文章

  • OC版-二分查找代码书写

    个人链接 博客园主页 : 博客园主页 GitHub : 我的GitHub iOS程序猿(媛)~~ : 这是我个人整...

  • OC各种算法,排序,查找实现

    二维数组查找数字的OC实现 OC 二分查找的实现 快速排序

  • 查找算法

    参考资料 有序查找 二分查找 循环版 递归版 无序查找 顺序查找

  • python_算法_二分查找

    不建议大家看这篇文章, 因为我自己看着都头晕 二分查找: 二分查找的前提条件是: 精简版: 啰嗦版: 二分查找的基...

  • 排序算法

    准备工作 一、快速排序 二、归并排序 三、堆排序 四、 二分查找 /*二分查找*/ 五、 冒泡排序 /*OC 冒...

  • python笔试面试项目实战2020百练1二分查找法(虾皮面试题

    题目1:请补充完整如下非递归二分查找的代码 题目2:请补充完整如下递归二分查找的代码 基础 二分查找是一种算法,其...

  • 查找算法

    查找算法 1顺序查找 2二分查找 2.1二分查找思路分析 2.2代码实现 3插值查找 3.1插值查找原理介绍: ​...

  • 二分查找

    网上找到的图片便于理解 二分查找递归实现与循环实现代码: /** 二分查找 1.二分查找又称折半查找,它是一种效率...

  • swift- 延时执行

    swift代码 OC版

  • 查找

    查找一般要掌握顺序查找、二分查找、哈希表查找和二叉排序树查找。要能够快速准确地写出二分查找的代码。 1. 顺序查找...

网友评论

    本文标题:OC版-二分查找代码书写

    本文链接:https://www.haomeiwen.com/subject/dopywttx.html