查找算法(python查找算法)

本篇文章给大家谈谈查找算法,以及python查找算法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

二分查找算法

二分查找算法,该算法要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。如果一个序列是无序的或者是链表,那么该序列就不能使用二分查找。

二分查找算法原理:若待查序列为空,则返回-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查找算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表