1、顺序查找
顺序查找也称为线形查找,属于无序查找算法。从数据结构线形表的一端开始依次将数据与目标数据进行比较,若有数据与目标数据相符,则查找成功,否则查找失败(即无目标数据)
C++实现的核心代码如下
for (int i = 0; i <= len; i++)
{
if (data[i] == value) // 如果数组中,第i个位置的数字 = 传入的数字
{
return data[i]; // 返回数组
}
}
2、二分查找(折半查找)
用给定值与中间结点的关键字比较,中间结点把表分成两部分,若相等则查找到目标数据;若不相等,再根据给定值与该中间结点关键字的比较结果确定下一步查找哪部分,然后进行递归,直到查找到目标数据或查找结束发现没有目标数据。
注意:二分查找仅适用于有序表,如升序表或降序表
C++实现的核心代码如下
int search(int arr[],int head,int end,int key) //key为目标数据,head和end分别为表的首尾
{
while(head<=end)
{
int mid = (head+end)/2;
if(arr[mid]>key)
{
end = mid - 1;
}
else if(arr[mid]<key)
{
head = mid + 1;
}
else
{
return mid;
}
}
return -1;
}