查找
顺序查找
基本思想:从数组的首元素开始,将元素逐个与待查找的关键字进行比较,直到找到相等的为止。若整个数组中没有与待查找元素相等的元素,则查找不成功。时间复杂度 $ O(n)$。
int seqSearch(int a[], int n, int key)
{
for(int i = 0; i < n; i++)
{
if(a[i] == key)
return i;
}
return -1;
}
折半查找
适用于在一个元素排列有序的数组中进行查找。
基本思想:对于已排序的序列,经过一次比较后,可将序列分割成两部分,然后只在有可能包含待查找元素的一部分中继续查找,,并根据试探结果继续分割,逐步缩小查找范围,直至找到或找不到为止。
int binarySearch(int a[], int n, int key)
{
int low = 0;
int high = n - 1;
while(low <= high)
{
int mid = (low + high) / 2;
if(key == a[mid])
return mid;
else if(key < a[mid])
high = mid - 1;
else
low = mid + 1;
}
return -1;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步