数据结构&算法 插入查找
-
插入查找
插入查找是二分查找的改进变体。该搜索算法在所需值的探测位置上工作。为了使该算法正常工作,数据收集应采用排序形式并平均分配。与线性搜索相比,二分查找具有时间复杂性的巨大优势。线性搜索的最坏情况复杂度为Ο(n),而二分查找的复杂度为Ο(log n)。在某些情况下,可能会事先知道目标数据的位置。例如,在电话号码簿的情况下,如果我们要搜索Morphius的电话号码。在这里,线性搜索甚至二分查找似乎都很慢,因为我们可以直接跳转到名称以"M"开头的存储空间。 -
二分查找中的定位
在二进制搜索中,如果找不到所需的数据,则列表的其余部分分为左右两个部分。搜索在其中一个中进行。即使对数据进行了排序,二分查找也无法利用它来探测所需数据的位置。 -
插入查找中的位置探测
插入查找通过计算探测器位置来找到特定项目。最初,探针位置是集合中最中间一项的位置。如果发生匹配,则返回该项目的索引。要将列表分为两部分,我们使用以下方法-如果中间项目大于该项目,则再次在中间项目右侧的子数组中计算探针位置。否则,将在中间项目左侧的子数组中搜索该项目。该过程同样在子数列上继续进行,直到子数列的大小减小到零为止。运行时插值搜索算法的复杂度为Ο(log(log n))相比,二分查找的Ο(log n) 是有利的情况。算法由于它是对现有二分查找算法的一种改进,因此我们提到了使用位置探测来搜索“目标”数据值索引的步骤-伪代码用C编程语言实现插入查找-如果我们编译并运行上述程序,它将产生以下结果-