实现基于有序顺序表的折半查找算法。
时间: 2023-08-04 16:08:13 浏览: 114
顺序查找和折半查找(C语言)
折半查找算法也叫二分查找算法,是一种高效的查找算法。前提条件是线性表中的元素必须按照关键字值非降序排列,即从小到大排列。
基于有序顺序表的折半查找算法步骤如下:
1. 确定查找区间的左右边界,初始时左边界为0,右边界为n-1,其中n为表长;
2. 计算中间位置mid=(left+right)/2;
3. 如果查找元素等于中间位置的元素,则查找成功,返回其在表中的位置;
4. 如果查找元素小于中间位置的元素,则在左半部分继续查找,右边界变为mid-1;
5. 如果查找元素大于中间位置的元素,则在右半部分继续查找,左边界变为mid+1;
6. 重复步骤2-5,直到查找成功或者左边界大于右边界,此时查找失败。
下面是基于有序顺序表的折半查找算法的C++实现代码:
```C++
int binarySearch(int a[], int n, int key)
{
int left = 0, right = n-1, mid;
while (left <= right)
{
mid = (left + right) / 2;
if (a[mid] == key)
return mid;
else if (a[mid] > key)
right = mid - 1;
else
left = mid + 1;
}
return -1; //查找失败
}
```
其中a[]表示有序顺序表,n表示表长,key表示要查找的元素。函数返回值为查找元素在表中的位置,如果查找失败,则返回-1。
阅读全文