二分查找也称折半查找,是一种比较高效的查找算法,二分查找要求线性表必须是顺序存储结构,而且表中元素要按关键字有序排列。
查找过程
假设线性表按升序排列,将表中间位置的元素与要查找的元素进行比较,如果相等,则查找成功,否则利用中间位置将表分成前后两个子表,如果中间位置的元素大于要查找的元素,则查找前一子表,否则查找后一子表。重复以上过程,直到查找到满足条件的记录。查找算法实现代码如下:
public static int binarySearch(int srcArray[], int key) {
int mid = srcArray.length / 2;
if (key == srcArray[mid]) {
return mid;
}
int start = 0;
int end = srcArray.length - 1;
while (start <= end) {
mid = (end - start) / 2 ;
if (key < srcArray[mid]) {
end = mid - 1;
} else if (key > srcArray[mid]) {
start = mid + 1;
} else {
return mid;
}
}
return -1;
}
时间复杂度为O(logn)
网友评论