public int binarySearch(int[] a, int searchKey) {
int lowerBound = 0;
int upperBound = a.length - 1;
int curIn;
while (true) {
curIn = (lowerBound + upperBound) / 2;
if (a[curIn] == searchKey)
return curIn;
else if (lowerBound > upperBound)
return -1;
else {
if (a[curIn] < searchKey)
lowerBound = curIn + 1;
else
upperBound = curIn - 1;
}
}
}
二分搜索的算法是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的key作比较,如果key=a[n/2]则找到x,算法终止。如果key<a [n/2],则我们只要在数组a的左半部继续搜索key(这里假设数组元素呈升序排列)。如果key>a[n/2],则我们只要在数组a的右半部继续搜索 key。
对于算法复杂度的比较:O(1) < O(logN) < O(N) < O(N^2)。
二分查找算法具有很高的效率,它的算法复杂度为O(lngN)。
分享到:
相关推荐
**二分搜索算法详解** 二分搜索算法,也称为折半搜索,是一种在有序数组中查找特定元素的有效方法。它的核心思想是通过不断缩小搜索范围,以递归或迭代的方式快速定位目标值。该算法充分利用了数组的有序特性,极大...
二分搜索算法是一种高效、基于比较的搜索技术,它在有序数据集合中寻找目标值。这个算法的核心思想是不断缩小搜索范围,通过每次迭代将搜索区间减半,从而快速定位到目标元素。二分搜索算法在计算机科学和编程中有着...
用C语言动态实现二分搜索算法,可以清楚的看到算法之行的全部过程。
在计算机科学中,大整数算法和二分搜索算法是两个重要的编程概念,尤其是在处理大量数据和优化搜索效率时显得尤为关键。 大整数算法主要应用于处理超过标准数据类型(如int、long)能表示的最大整数值。在Java中,`...
设a[0:n-1]是一个已排好序的数组。请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素的位置I和大于x的最大元素位置j。
使用 MATLAB 仿真经典算法的问题示例:实现二分搜索算法; 使用 MATLAB 仿真经典算法的问题示例:实现二分搜索算法; 使用 MATLAB 仿真经典算法的问题示例:实现二分搜索算法; 使用 MATLAB 仿真经典算法的问题示例...
二分搜索算法是一种高效的数据查找方法,属于分治策略的典型应用。在已排序的数组中,二分搜索通过不断将查找区间减半来定位目标元素。以下是关于这个实验报告的详细解读: 1. **问题描述**:实验要求在给定的、已...
二分搜索算法是一种高效、基于比较的搜索算法,主要应用于有序的数据集合中。它通过将目标值与数据集的中间元素进行比较,不断缩小搜索范围,直到找到目标值或者确定目标值不存在。这个过程通常在计算机科学中被称为...
本文档将详细介绍算法分析与设计中的二分搜索算法,涵盖其基本概念、实现步骤、优缺点分析等方面,旨在帮助算法初学者深入了解二分搜索的原理和应用。 一、基本概念 二分搜索是一种常用的搜索算法,用于在有序数组...
二分搜索算法是一种高效查找策略,它基于分治法(Divide and Conquer)思想,广泛应用于有序数据集合。在本项目中,我们利用C++编程语言实现了这一算法,以解决《算法分析与设计》一书中的相关练习题。 首先,理解...
二分搜索算法是高效的搜索算法,用于在有序数组中查找特定元素的位置,通过不断缩小搜索范围来提高效率。下面是二分搜索算法的详细知识点: 概念:二分搜索算法(Binary Search)是一种高效的搜索算法,用于在有序...
二分搜索算法是一种高效、基于比较的搜索算法,主要应用于有序数据集合中。它通过将目标值与中间元素进行比较,逐步缩小搜索范围,从而快速找到目标元素或确定其不存在。这种算法的时间复杂度为O(log n),在大量数据...
二分搜索算法,又称折半查找,是一种在有序数组中查找特定元素的高效搜索方法。它的基本思想是将数组分成两个部分,每次比较中间元素与目标值,根据比较结果缩小搜索范围,直到找到目标值或者搜索范围为空。二分搜索...
首先,二分搜索算法是一种在有序数组中查找特定元素的搜索算法。它的核心思想是将数组分为两半,每次都检查中间元素,如果中间元素是目标值,则搜索结束;如果中间元素比目标值小,则在数组的右半部分继续搜索;反之...
二分搜索算法是一种基于分治策略的高效查找算法,它适用于已排序的数组。在给定的数组`a[0 : 8]={1, 8, 12, 15, 16, 21, 30, 35, 39}`中,我们可以通过二分搜索来解决以下三个问题: 1) 查找30:二分搜索首先找到...