算法回顾系列第三篇:二分查找算法
------------------------------------------------
二分查找算法
基本原理:
首先,假设表中元素是按升序排列.
将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功.
否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表.
重复以上过程(使用递归),直到找到满足条件的记录,使查找成功,或直到子表不存在为止.
程序实现:
/**
* 二分查找
* @param input 已排序的待查数组.
* @param target 需要插入的数.
* @param from 当前数组查找范围的起点(0).
* @param to 当前数组查找范围的终点(length-1).
* @return 返回目标在数组中,按顺序应在的位置.
*/
private static int binarySearch(int[] input, int target, int from, int to){
int range = to-from;//如果范围大于0,即存在两个以上的元素(子表),则继续拆分
if(range > 0){
//选定中间位
int mid = (to+from)/2;
//如果临界位不满足,则继续二分查找
if (input[mid] > target){//中间位置的元素值大于目标元素(改为小于代表逆序)
return binarySearch(input,target,from,mid-1);//在0至中间位置查找
}else{//中间位置的元素值小于目标元素
return binarySearch(input,target,mid+1,to);//在中间位置到末尾位置查找
}
}else{
if (input[from] > target){//改为小于代表逆序
return from;
}else{
return from + 1;
}
}
}
优点:比较次数少,查找速度快,平均性能好.
缺点:要求待查表为有序表,且插入删除困难.
二分查找方法适用于不经常变动而查找频繁的有序列表.
分享到:
相关推荐
首先,让我们回顾一下二分查找的基本思想。在有序数组或字符串中查找特定元素时,二分查找可以显著提高效率。它将搜索范围不断减半,直到找到目标元素或确定其不存在。在解决子序列问题时,二分查找通常用于在目标...
这三种场景分别对应了二分查找的不同应用,理解这些变体有助于我们在实际编程中灵活运用二分查找算法。在实际编程中,还需要注意边界条件和异常处理,确保算法的健壮性。此外,对于大型数据集,二分查找的时间复杂度...
- **常见算法分类**:排序算法(冒泡排序、快速排序等)、搜索算法(二分查找)、图算法(Dijkstra算法)等。 ### 三、C语言中的算法实现 #### 3.1 排序算法 排序算法是算法学习中最基础也是最重要的部分之一,在...
2. **查找算法**:如线性查找、二分查找。线性查找适用于小规模数据,而二分查找则在有序数组中表现出高效性能。 3. **递归与分治**:递归算法如斐波那契数列、汉诺塔问题,分治策略如快速排序、归并排序,都是利用...
本文详细介绍了在江苏二级C++考试中常考的一些重要算法,包括排序算法(如冒泡排序、选择排序、插入排序)、查找算法(如线性查找、二分查找)、递归与迭代以及动态规划等。掌握这些算法不仅对于考试至关重要,对于...
* 查找算法:线性查找、二分查找等 * 图结构:图的存储和遍历 * 树结构:二叉树、普通有序树等 * 队列结构:链式队列、顺序循环队列等 * 栈结构:链式栈、顺序栈等 基础算法 基础算法是解决问题的步骤。常见的...
2. **搜索算法**:包括二分查找、广度优先搜索(BFS)和深度优先搜索(DFS),在数据结构如数组、树和图中寻找目标元素或路径。 3. **图算法**:如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法、...
2. **搜索算法**:二分查找、广度优先搜索(BFS)和深度优先搜索(DFS)等,这些算法在数据结构中寻找信息或解决路径问题。 3. **图论**:包括最小生成树(如Prim算法和Kruskal算法)、最短路径算法(如Dijkstra算法)...
### Python二分查找算法的递归实现方法 #### 一、引言 在计算机科学领域,**二分查找算法**是一种高效的查找技术,主要用于在有序数组中搜索特定元素。相较于线性查找,二分查找的时间复杂度更低,尤其是在处理大...
2. **查找算法**:顺序查找、二分查找、哈希查找等的实现和效率。 3. **图论算法**:深度优先搜索、广度优先搜索、最短路径算法(Dijkstra、Floyd-Warshall、Bellman-Ford)、最小生成树(Prim、Kruskal)等。 4. ...
此章可能会涵盖各种排序算法,如冒泡排序、插入排序、选择排序、快速排序、归并排序等,以及查找算法,如顺序查找、二分查找等。可能还会对比分析它们的时间复杂度和适用场景。 第四章-1:这部分可能是对第四章内容...
3. **查找算法**:分析了线性查找、二分查找以及哈希表等查找算法。二分查找在有序列表中的效率较高,而哈希表提供了近乎常数时间的查找速度,但需要额外的内存空间。 4. **图算法**:讨论了图的基本概念,如邻接...
4. **搜索算法**:这部分涵盖了线性搜索、二分查找、哈希表查找等基本搜索算法,以及深度优先搜索(DFS)和广度优先搜索(BFS)等图和树的遍历方法。同时,教程还会介绍更高级的搜索策略,如A*搜索算法。 5. **排序...
通过对归并排序和二分查找这两个案例的学习,我们可以更深入地理解分治法设计范式。这种范式不仅有助于简化问题的处理过程,而且还能有效地提高算法的效率。在后续的学习中,我们还会接触到更多基于分治法的高效算法...
2. **排序与搜索**:如冒泡排序、快速排序、归并排序、二分查找等经典算法,这些是数据处理的基础。 3. **图论**:包括图的遍历(深度优先搜索和广度优先搜索)、最短路径算法(如Dijkstra算法和Floyd算法)以及...
2. **查找算法**:如二分查找、线性查找、哈希查找等,它们在处理数据检索时发挥关键作用。 3. **图算法**:如深度优先搜索(DFS)、广度优先搜索(BFS)、最短路径算法(Dijkstra、Floyd-Warshall)等,对于网络...
- **定义**:二分查找是一种在有序数组中查找特定元素的高效算法。查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素...
- 二分查找和二叉搜索树的复杂度分析,平均时间复杂度通常为O(logn)。 - 大多数遍历操作的时间复杂度为O(n^2),比如双重循环。 - 递归操作通常具有O(n)的时间复杂度。 - 线性辅助空间复杂度,例如在进行原地排序...