结合数据结构知识,论述折半查找算法思想,并写出对应的伪代码
伪代码?直接写出来不好么?
折半查找的前提是数组有序,且要知道递增还是递减。然后定义两个游标left和right,分别指向数组首尾。循环比较(left+right)/2所对应元素值和要查找值的大小关系,不断调整left和right游标,直到left > right或者找到指定值
假设数组递增序列
int search(int *a,int n,int x)
{
int left = 0,right = n-1;
while(left <= right)
{
int mid = (left + right)/2;
if(a[mid] == x)
return mid;
else if(a[mid] > x)
right = mid - 1;
else
left = mid + 1;
}
return -1;
}