查找算法(python查找算法)
本篇文章给大家谈谈查找算法,以及python查找算法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、二分查找算法
- 2、查找算法有哪些
- 3、C语言 查找算法实现
- 4、几种常见的查找算法之比较
- 5、什么是查找算法
二分查找算法
二分查找算法,该算法要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。如果一个序列是无序的或者是链表,那么该序列就不能使用二分查找。
二分查找算法原理:若待查序列为空,则返回-1,并退出算法;若待查序列不为空,则将它的中间元素与目标数值进行比较,判断是否相等;若相等,则返回中间元素索引,并退出算法;此时已查找成功。若不相等,则比较中间元素与目标数值的大小。
若中间元素目标数值,则将当前序列的前半部分作为新的待查序列;若中间元素目标数值,则将当前序列的后半部分作为新的待查序列;在新的序列上重新从第(1)步开始查找。
二分法查找的思路:首先,从数组的中间元素开始搜索,如果该元素是目标元素,则搜索过程结束,否则执行下一步。如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域查找,然后重复步骤(1)的操作。如笑盯果某一步数组为空,则表示找不到目标元素。
二分查找的一个技巧是:不要出基升亮现else,而是把所有情况用else,if写清楚,这样可以清楚地展现所有细节。本文都会使用else,if,旨在讲清楚搏宽,读者理解后可自行简化。
查找算法有哪些
查找算法常用的有,顺序查找,二分查找,哈希表查找,等等。
C语言 查找算法实现
#include
int main() {
int i,x,n,*result = NULL;
int a[10],low,high,mid;
scanf_s("%d",n);
// 确保输入的数据好锋是非递减的
for(i = 0 ; i n i 10 ; i++) {
scanf_s("%d",a[i]);
}
fflush(stdin); // 如果输入的数组元素多于10个,则废弃
scanf_s("%d",x);
low = 0,high = n - 1;
while(low = high) {
mid = (low + high) /友哪晌 2;
if(x == a[mid]) {
result = a[mid]; // 这里给出的缓兄是查找到该元素的指针
break;
}
else if(x a[mid]) {
high = mid - 1;
}
else {
low = mid + 1;
}
}
if(result != NULL) {
printf("%d\n",*result);
}
else {
printf("no result\n");
}
return 0;
}
几种常见的查找算法之比较
一、顺序查找
条件:无序或有序队列。
原理:按顺序比较每个元素,直到找到关键字为止。
时间复杂度:O(n)
二、二分查找(折半查找)
条件:有序数组
原理:查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;
如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。
如果在某一步骤数组为空,则代表找不到。
这种搜索算法每一次比较都使搜索范围手漏缩小一半。
岁散时间复杂度:O(logn)
三、哈希表(散列表)
条件:先创建哈希表(散列表)
原理:根据键值方式(Key value)进行查找,通过散列函数,定毕雀烂位数据元素。
时间复杂度:几乎是O(1),取决于产生冲突的多少。
什么是查找算法
查找启岁就是在一个数据集合里查找到你需要的数据,查找算法就是在查找过程中使用的算法。查找算法有好多皮旁郑,最基础的就是线性表查找。
因为提到了算法,所以需要注意的是时间复杂度跟空间复杂度,进而涉及到数据的存储方式,比如数组,链表,矩阵,树,图等等数据结构,这些数据结构可以帮助你降低算法的复杂度。
如果有兴趣,随便找燃颂本数据结构书翻翻,里面或多或少都会有讲解。
[img]关于查找算法和python查找算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。