常见的搜索算法原理及其时间复杂度 您所在的位置:网站首页 数据库crud复杂度比较 常见的搜索算法原理及其时间复杂度

常见的搜索算法原理及其时间复杂度

2024-06-03 07:12| 来源: 网络整理| 查看: 265

常见的搜索算法原理及其时间复杂度 1.顺序查找: 最基础的查找方法,对比每一个元素进行查找。在数据量很大的时候效率相当的慢。数据结构:有序或者无需的队列时间复杂度:O(n) 2.二分查找: 二分查找首先要求数组有序每次查找从中间开始查找,比较查找对象和中间值,如果比中间值小,则去头到中间值的范围继续二分查找。如果比中间值大,则去中间值以后的数组进行二分查找。如果某一步骤数组为空,则表示没有此对象数据结构:有序数组时间复杂度:O(logN) 3.二叉树排序:

二叉排序树的特点是:

a.若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;

b.若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;

c.它的左、右子树也分别为二叉排序树。

搜索原理:

a.若b是空树,则搜索失败,否则:

b.若x等于b的根节点的数据域之值,则查找成功;否则:

c.若x小于b的根节点的数据域之值,则搜索左子树;否则:

d.查找右子树。

数据结构:二叉排序树     时间复杂度: O(log2N)

4.哈希散列法(哈希表)

原理:先根据key值和哈希函数创建一个哈希表(散列表),然后根据键值,通过散列函数,定位数据元素位置。

数据结构:哈希表     时间复杂度:几乎是O(1),取决于产生冲突的多少。

5.分块查找

分块查找又称索引顺序查找,它是顺序查找的一种改进方法。其算法思想是将n个数据元素”按块有序”划分为m块(m ≤ n)。每一块中的结点不必有序,但块与块之间必须”按块有序”;即第1块中任一元素的关键字都必须小于第2块中任一元素的关键字;而第2块中任一元素又都必须小于第3块中的任一元素,依次类推。

算法流程:

先选取各块中的最大关键字构成一个索引表;

查找分两个部分:先对索引表进行二分查找或顺序查找,以确定待查记录在哪一块中;然后,在已确定的块中用顺序法进行查找。

这种搜索算法每一次比较都使搜索范围缩小一半。它们的查询速度就有了很大的提升,复杂度为。如果稍微分析一下会发现,每种查找算法都只能应用于特定的数据结构之上,例如二分查找要求被检索数据有序,而二叉树查找只能应用于二叉查找树上,但是数据本身的组织结构不可能完全满足各种数据结构(例如,理论上不可能同时将两列都按顺序进行组织),所以,在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有