二分查找算法(也称为折半查找算法)效率相对较高,是一种在有序数组中查找某一特定元素的搜索算法。步骤:第一步:从数组的中间元素开始查找,如果数组中的中间元素等于要查找的元素,查找结束;第二步:如果要查找的元素大于或者小于数组的中间元素,则在数组大于或小于中间元素的那一半中查找,和步骤一同样从中间元素开...
分类:
编程语言 时间:
2015-04-12 19:08:59
阅读次数:
120
一、有序表查找
1.折半查找/二分查找算法
(1)基本思想:在顺序存储的有序表中,取中间纪录(a[mid]=key)作为比较对象,若给定值与中间纪录的关键字相等,则查找成功;若给定值小于中间纪录的关键字,则在中间纪录的左半区继续查找;若给定值大于中间纪录的关键字,则在中间纪录的右半边。不断重复上述过程,直到查找成功,或所有查找区域无记录,查找失败为止。
(2)使用条件:线性表中的纪录是关键码...
分类:
其他好文 时间:
2015-04-04 23:49:18
阅读次数:
422
转自:http://www.cppblog.com/converse/archive/2009/10/05/97905.html二分查找算法基本思想二分查找算法的前置条件是,一个已经排序好的序列(在本篇文章中为了说明问题的方便,假设这个序列是升序排列的),这样在查找所要查找的元素时,首先与序列中间的...
分类:
其他好文 时间:
2015-04-03 20:57:20
阅读次数:
167
Divide Two IntegersDivide two integers without using multiplication, division and mod operator.If it is overflow, return MAX_INT.思路:类似二分查找算法,只不过我们做的是对...
分类:
其他好文 时间:
2015-04-02 13:10:11
阅读次数:
114
二分查找是我们经常会遇到的算法,思路清晰,代码简洁。二分查找要求序列有序,且支持随机存取,一般情况下我们讨论的序列不存在相同元素,则二分查找可以很熟练的表示如下:
int binsearch(int A[], int n, int target)
{
int left=0,right=n-1,res=-1;
while(left<=right)
...
分类:
其他好文 时间:
2015-04-01 17:46:37
阅读次数:
142
Java集合中二分查找算法实现
Arrays.binarySearch实现了对有序数组特定区间的二分查找,虽然我们觉得很简答,但是阅读源码的确能看到实现这些库的优秀技巧,总是在追求完美和高效。
值得学习的地方有:
(1)边界检查;
(2)求中位数的时候使用位移操作,而不是 x/2;
(3)如果查找的元素不在数组中,通过返回值昭示了应该插入的位置,而不是直接返回-1;...
分类:
编程语言 时间:
2015-03-30 18:50:14
阅读次数:
165
今天复习以前的代码,突然发现插入排序用的二分查找算法实现得很别扭,于是试试重写一个,没想到相当顺利,几分钟就写好并测试通过了:static int BinarySearch(int[] array, int value, int start, int end) { if(start ==...
分类:
其他好文 时间:
2015-03-21 18:32:27
阅读次数:
99
/* * 二分查找算法也称为折半搜索、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。 * 请注意这种算法是建立在有序数组基础上的。 * */public class BinarySearch { public static void main(String[] args) { ...
分类:
编程语言 时间:
2015-03-11 17:06:42
阅读次数:
115
STL包含四种不同的二分查找算法,binary_search lower_bound upper_bound equal_range.他们的作用域是已经排序好的的数组。
★binary_search试图在已排序的[first, last)中寻找元素value。如果找到它会返回true,否则返回false,它不返回查找位置。
★iterator
lower_boun...
分类:
其他好文 时间:
2015-03-01 12:01:11
阅读次数:
178
算法导论第2.3-7的习题中要求给出一个运行时间为O(nlgn)的算法,这个算法的功能是能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在两个其和等于x的元素。
方法一:都知道在一个有序的序列中使用二分查找的时间复杂度是O(lgn)。首先排序,那么我们可以枚举集合S中的每一个元素,然后使用二分查找算法查找x-y(y是S中的一个元素),那么这个算法的时间复杂度是O(nlgn)。...
分类:
其他好文 时间:
2015-02-21 18:52:24
阅读次数:
243