• 二分法


    一、二分法

    1.二分法只适用于已经做好排序的数列。

    2.二分法(Bisection method) 即一分为二的方法. 设[a,b]为R的闭区间. 逐次二分法就是造出如下的区间序列([an,bn]):a0=a,b0=b,且对任一自然数n,[an+1,bn+1]或者等于[an,cn],或者等于[cn,bn],其中cn表示[an,bn]的中点。

    3二分法的时间复杂度:T(n)=O(logn)2

    二、使用

    1.由于二分法是以有序数列为前提,所以在使用中会有限制。

    2.代码

    - (void)viewDidLoad {
     [super viewDidLoad];
     
     NSArray *arr = @[@1,@20,@30,@45,@50,@55,@60,@66,@70];
     NSInteger x = 70,min,max,mid;
     min = 0;
     max = arr.count - 1;
     mid = (min + max) / 2;
     
     for (int i = 0; i < arr.count; i++)
     {
     if ([arr[mid] integerValue] == x)
     {
     NSLog(@"查找次数为--->%d次",i);
     NSLog(@"寻找值位置为--->%ld",mid);
     return;
     }else if ([arr[mid] integerValue] > x)
     {
     max = mid - 1;
     mid = (min + max) / 2;
     }else if ([arr[mid] integerValue] < x)
     {
     min = mid + 1;
     mid = (min + max) / 2;
     }
     }
     }

    三、注意

    ios其实已经提供了数组里数值的查找方法:

        NSArray *array =@[@"1",@"2"];
        NSInteger index = [array indexOfObject:@"1"];
  • 相关阅读:
    BZOJ 2006 [NOI2010]超级钢琴
    标准打印一棵树
    COJ 0288 路径(2015升级版)
    批判树套树。。。。。。。。
    BestCoder Round #49
    蓝牙通信中读取固定长度数组的解决
    5月5日的规划
    必须要改变这样的生活
    五一结束
    五一来临
  • 原文地址:https://www.cnblogs.com/huadeng/p/7081695.html
Copyright © 2020-2023  润新知