首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    小朋友学数据结构(5):顺序查找

    查找是最常见的数据操作之一,也是数据结构的核心运算之一,其重要性不言而喻。 顺序查找是最简单的查找策略,对于小规模的数据,顺序查找是个不错的选择。...(一)基本思想 从数据的第一个元素开始,依次比较,直到找到目标数据或查找失败。 1 从表中的第一个元素开始,依次与关键字比较。 2 若某个元素匹配关键字,则查找成功。...3 若查找到最后一个元素还未匹配关键字,则查找失败。 ? (二)时间复杂度 顺序查找平均关键字匹配次数为表长的一半,其时间复杂度为O(n)。...(三)顺序查找的优缺点 优点:对于待查的结构没有任何要求,而且算法非常简单,当待查表中的记录个数较少时,采用顺序查找较好,顺序查找既适用于顺序存储结构,又使用于链接存储结构。...} } return -1; //查找失败 } int main() { int array[] = {3, 5, 2, 7, 6};

    45320

    查找算法】折半查找

    本篇文章将介绍折半查找算法。 文章目录 何为折半查找? 算法实现 递归实现 效率分析 何为折半查找?...上一篇文章介绍了顺序查找算法,我们知道,虽然顺序查找算法适用性高,但效率太低,那么能不能在此基础上继续提高算法的效率呢?...这个时候,折半查找诞生了,它的原理是每次都将待查找的记录所在的区间缩小一半,比如: 若要在该序列中查找元素值4,折半查找是如何做到的呢?...它需要先设置两个游标,一个指向最左边,一个指向最右边: 这两个游标所表示的范围即为查找区间,初始我们在下标为1到10的区间内查找,这个查找也是讲究方法的,不是一个一个地去遍历查找

    1K20

    经典算法——顺序查找

    空间复杂度 顺序查找的优缺点 顺序查找 顺序查找也叫线性查找 查找过程:从列表中的第一个元素开始,逐个元素进行比较,如果找到相等的元素,则 查找成功 ,如果直至表中最后一个记录数与目标值都不相等,则表示...顺序查找算法适用于绝大多数场景,既可以在有序序列中查找目标元素,也可以在无序序列中查找目标元素。 算法效率 算法效率分析分为两种:第一种是时间效率,第二种是空间效率。...= 67,指针右移 指针指向第四个元素,也就是67,67 == 67,查找成功 代码实现 Java代码实现 定义顺序查找方法 private int orderFind(int number...平均情况 综合两种情况,顺序查找的时间复杂度为O(n),属于查找较慢的算法。...空间复杂度 由于算法不会改变原有的元素集合,只需要一个额外的变量控制索引变化,所以空间复杂度为常数级:O(1) 顺序查找的优缺点 1)缺点:查找效率较低,特别是当待查找集合中元素较多时,不推荐使用顺序查找

    88710

    常用查找算法之(一)----顺序查找

    顺序查找比较简单,其执行的操作从数据序列中的第1 个元素开始,从头到尾依次逐个查找,直到找到所要的数据或搜索完整个数据序列。顺序查找主要针对少量的、无规则的数据。...用java代码实现只需编写一个循环,将数组中各元素依次与待查找的目标数进行比较即可 //查看指定是数组中是否存在 指定的值,如果存在返回 true,否则返回 false //T(n) = O(n)...for(int i=0;i<len;i++){ if(key == arr[i]) return true; } return false; } 对于包含n 个数据的数据序列,使用顺序查找方法查找数据...而最差的情况是需比较完所有的n 个数据才找到目标数据或者确认没有该数据,时间复杂度为O(n); 顺序查找是对数列顺序的比较,没有额外的空间,所以空间复杂度为O(1)。 适合元素较少的查找

    40830

    二分查找(折半查找

    二分查找的前提是数据一定要有序,否则一切皆为空谈。通过有序的一段数据使用二分查找较常规遍历查找算法速度要快一些。其中二分查找发有两种实现,一种为常规while循环,另外一种为递归。...若相等,则查找成功。否则利用中间位置将集合分成两个子集。 若中间元素大于目标元素,则在左子集中查找,否则在右子集中查找。 重复以上操作,直至找到要查找的元素,或是直到子集不存在查找的数据。...include #include int binarySearch(int *data, int low, int high, int find) { // 循环进行查找.../ 2; // 判断除2后的下标所对应的数据是否就是我们找的数据 // 如果是则直接返回 if (data[mid] == find) return mid; // 否则判断该下标对应的数据是否大于查找的数据...%d 的值是我们需要的数据 %d:\n”, find, arr[find]); system(“pause”); return 0; } 下图是根据以上代码制作的二分查找的示例图,可参考学习:

    22720

    查找算法之顺序查找,折半查找,二叉查找

    顺序查找   顺序查找查找过程为:从表中的最后一个数据元素开始,逐个同记录的关键字做比较,如果匹配成功,则查找成功;反之,如果直到表中第一个关键字查找完也没有成功匹配,则查找失败 同时,在程序中初始化创建查找表时...,由于是顺序存储,所以将所有的数据元素存储在数组中,但是把第一个位置留给了用户用于查找的关键字。...例如,在顺序表{1,2,3,4,5,6}中查找数据元素值为 7 的元素,则添加后的顺序表为: ?             ...图1   顺序表的一端添加用户用于搜索的关键字,称作“监视哨”。   图 1 中监视哨的位置也可放在数据元素 6 的后面(这种情况下,整个查找顺序应有逆向查找改为顺序查找)。   ...折半查找   折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高。但是该算法的使用的前提是静态查找表中的数据必须是有序的。

    1.6K30

    DS静态查找顺序索引查找

    题目描述 给出一个队列和要查找的数值,找出数值在队列中的位置,队列位置从1开始 要求使用顺序索引查找算法,其中索引表查找和块内查找都采用不带哨兵、从头开始的顺序查找方法。...第六行起,输入t个数值,输入t行 输出 每行输出一个要查找的数值在队列的位置和查找次数,数据之间用短划线隔开,如果查找不成功,输出字符串error 输入样例1 18 22 12 13 8 9 20...顺序索引查找。 首先建立索引表,即两个数组,或者一个结构体数组,用来装关键字,即一个小分块里面最大的数值,还要装关键字对应的小分块在队列里面的起始位置。 关键字由题目给出。...其他的关键字对应的起始位置的求法: 顺序遍历队列,找到比前一个关键字大的数值,该数值对应的位置就是次关键字对应的起始位置。...然后到了查找部分: 其实就是部分顺序查找,先在索引表里面查找出在哪个子块里面,然后到子块里面顺序查找

    17520

    二分查找

    二分查找算法的前置条件是,一个已经排序好的序列(在本篇文章中为了说明问题的方便,假设这个序列是升序排列的),这样在查找所要查找的元素时,首先与序列中间的元素进行比较,如果大于这个元素,就在当前序列的后半部分继续查找...,如果小于这个元素,就在当前序列的前半部分继续查找,直到找到相同的元素,或者所查找的序列范围为空为止. int BinSearch(SeqList * R, int n , KeyType K ) {...//在有序表R[0..n-1]中进行二分查找,成功时返回结点的位置,失败时返回-1    int low=0,high=n-1,mid; //置当前查找区间上、下界的初值    if(R[low].key...key>K)    high=mid-1; //继续在R[low..mid-1]中查找    else    low=mid+1; //继续在R[mid+1..high]中查找    }    return...-1; //当low>high时表示查找区间为空,查找失败    } //BinSeareh int BinSearch2(int array[], int n, int v) { int

    38730
    领券