typedef struct node
{
int *elem;
int len;
} Seqlist;
int halfSearch(Seqlist list, int key) //非递归
{
int low = 0, mid, high = list.len - 1;
while (low <= high)
{
mid = high / 2;
if (list.elem[mid] == key)
{
return mid;
}
else if (key > list.elem[mid])
{
low = mid + 1;
}
else
high = mid - 1;
}
return -1;
}
int halfSearch1(Seqlist list, int key, int low, int high)
{
int mid;
if (low > high)
{
return 0;
}
mid = (low + high) / 2;
if (list.elem[mid] == key)
{
return mid;
}
else if (list.elem[mid] > key)
{
halfSearch1(list, key, low, mid - 1);
}
else
halfSearch1(list, key, mid + 1, high);
}
折半查找,递归非递归
最新推荐文章于 2022-03-09 19:56:23 发布