您的位置:首页 > 理论基础 > 数据结构算法

数据结构与算法-二分查找

2018-03-21 19:32 513 查看
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x < a[n/2],则只要在数组a的左半部分继续搜索x,如果x > a[n/2],则只要在数组a的右半部搜索x.

时间复杂度可以表示O(h)=O(log2n)

基于循环的代码:

int BinarySearch_Recurrence(int sort_array[], int n, int target){
int begin = 0;
int end = n - 1;
while (begin <= end){
int mid = (begin + end) / 2;
if (target == sort_array[mid])
return 1;
else if(target < sort_array[mid]){
end = mid - 1;
}
else if(target > sort_array[mid]){
begin = mid + 1;
}
}
return 0;
}


基于递归的代码:

int BinarySearch_Recursive(int sort_array[], int begin, int end, int target){
if (begin > end){
return 0;
}
int mid = (begin + end) / 2;
if (target == sort_array[mid]){
return 1;
}
else if (target < sort_array[mid]){
return BinarySearch_Recursive(sort_array, begin, mid - 1, target);
}
else if (target > sort_array[mid]){
return BinarySearch_Recursive(sort_array, mid + 1, end, target);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构与算法