iOS 算法~二分法查找有序数组元素

时间:2022-05-16 01:00:18

//联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄

使用二分法好处:可以加快寻找的效率。

二分法的思路:它是通过与数组的中间值进行比较的

步骤如下:

 1.我们要查找的值为X

 2.数组是从小到大排序的

 **

 1.先取出数组中间的元素

 2.把中间元素和X进行比较,如果中间元素大于X,那么X就位于第一个元素,和中间元素之间。反之,如果中间元素小于X,那么X就位于中间元素和最大值之间。

 3.这样进行比较之后,我们的查找范围就小了一半。

实现代码:

 - (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;

 }

 }

 }