算法-二分查找

简介:

 二分查找算法是在有序数组中用到的较为频繁的一种算法,同样是一种很高效的算法,我们最长遇到的判断一个数字是不是在数组中,前提是数组是有序的,通常我们会数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn),譬如数组{0,1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素3,用二分查找的算法执行的话,其顺序为:
    1.第一步查找中间元素,即4,由于4>3,则3必然在4之前的数组元素中,那么就在{0,1, 2, 3}中查找,
    2.寻找{0,1, 2, 3}的中位数,为1,1<3,则3应该在1右边的数组元素中,剩下2,3。

    3.2和3的中间是2,2<3,最后3=3

    二分查找算法就是不断将数组进行对半分割,每次拿中间元素和查找的数进行比较:

1
2
3
4
5
6
7
8
9
10
11
12
13
-( NSInteger )binarySearch:( NSMutableArray  *)array number:( NSInteger )number start:( NSInteger )start  endIndex:( NSInteger )end{
     while  (start<=end) {
         NSInteger   middle=(start+end)/2;
         if  ([[array objectAtIndex:middle] integerValue]>number) {
             end=middle-1;
         } else  if  ([[array objectAtIndex:middle] integerValue]<number){
             start=middle+1;
         } else {
             return  middle;
         }
     }
     return  -1;
}
本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4537784.html,如需转载请自行联系原作者
相关文章
|
5月前
|
算法 测试技术 索引
算法-二分查找
算法-二分查找
39 0
|
2月前
|
算法
【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
|
2月前
|
存储 算法 Java
深入算法基础二分查找数组
文章深入学习了二分查找算法的基础,通过实战例子详细解释了算法的逻辑流程,强调了确定合法搜索边界的重要性,并提供了Java语言的代码实现。
深入算法基础二分查找数组
|
2月前
|
算法
【算法】二分查找——二分查找
【算法】二分查找——二分查找
|
3月前
|
算法
【算法】二分查找(整数二分和浮点数二分)
算法学习——二分查找(整数二分和浮点数二分)
32 0
【算法】二分查找(整数二分和浮点数二分)
|
4月前
|
存储 算法 C语言
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
|
4月前
|
机器学习/深度学习 算法 索引
数据结构算法--1 顺序查找二分查找
**顺序查找时间复杂度为O(n)**,适合无序列表,可以通过`enumerate`或直接遍历索引来实现。**二分查找时间复杂度为O(logn)**,适用于有序列表,利用Python中`left`、`right`指针和`mid`点不断缩小搜索范围。效率上二分查找更优。
|
4月前
|
存储 算法 Java
Java查找算法概览:二分查找适用于有序数组,通过比较中间元素缩小搜索范围;哈希查找利用哈希函数快速定位,示例中使用HashMap存储键值对,支持多值关联。
【6月更文挑战第21天】Java查找算法概览:二分查找适用于有序数组,通过比较中间元素缩小搜索范围;哈希查找利用哈希函数快速定位,示例中使用HashMap存储键值对,支持多值关联。简单哈希表实现未涵盖冲突解决和删除操作。
43 1
|
4月前
|
算法 搜索推荐 Java
二分查找算法详解及实现
二分查找算法详解及实现
57 2
|
3月前
|
算法 JavaScript
JS 【算法】二分查找
JS 【算法】二分查找
27 0
下一篇
无影云桌面