binary search

王朝百科·作者佚名  2010-05-13  
宽屏版  字体: |||超大  

一、定义

二分法检索(binary search)又称折半检索,二分法检索的基本思想是设字典中的元素从小到大有序地存放在数组(array)中,

首先将给定值key与字典中间位置上元素的关键码(key)比较,如果相等,则检索成功;

否则,若key小,则在字典前半部分中继续进行二分法检索;

若key大,则在字典后半部分中继续进行二分法检索。

这样,经过一次比较就缩小一半的检索区间,如此进行下去,直到检索成功或检索失败。

二分法检索是一种效率较高的检索方法,要求字典在顺序表中按关键码排序。

二、代码举例:

java版本:

public static int BinarySearch (int[] a, int low, int high, int searchValue)

{

// recursive version

int mid;

if (high == low)

return -1;

mid = (low + high) >>> 1; // Or mid = low + ((high - low) / 2)

if (a [mid] > searchValue)

{

return BinarySearch (a, low, mid, searchValue);

}

else if (a [mid] < searchValue)

{

return BinarySearch (a, mid + 1, high, searchValue);

}

else //when a[mid] is the search value..

{

return mid;

}

} //end function

C/C++版本:

int binary_search( int *a, int n, int key )

{

int mid, front=0, back=n-1;

while (front<=back)

{

mid = (front+back)/2;

if (a[mid]==key)

return mid;

if (a[mid]<key)

front = mid+1;

else back = mid-1;

}

return -1;

}

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有