008.【查找算法】六种查找算法的时间复杂度

news/2024/12/22 18:42:02/

1. 算法概述

  • 顺序查找算法:按照数据的顺序一项一项逐个查找,所以不管数据顺序如何,都要从头到尾的遍历一次。速度比较慢,它的时间复杂度是 T=O(n)。
  • 二分查找算法:将数据分割成两等份,然后用键值(要查找的数据)与中间值进行比较,逐个缩小查找范围。速度比顺序查找快,它的时间复杂度是 T=O(log n)。
  • 插补查找算法:按照数据的分布,利用公式预测键值所在的位置,快速缩小键值所在序列的范围,慢慢逼近,知道查找到数据为止,这中算法比二分法查找速度还快,它的时间复杂度为 T=O(log log(n))。
  • 分块查找算法:要求是顺序表,它是顺序查找算法的一种改进方法,它的时间复杂度是 T=O(log以2为底m的对数+N/m)。
  • 斐波拉契查找算法:斐波拉契查找算法就是在二分法的基础上根据斐波拉契数据进行分割。用键值(想要查找的数据)与黄金分割点进行比较。逐渐缩小查找范围。它的时间复杂度是 T=O(log 2n)。
  • 哈希查找算法:把一些复杂的数据,通过某种函数映射关系,映射成更加易于查找的方式。这种方法速度最快,它的时间复杂度是 T=O(1)。
查找算法的名称时间复杂度(大O表示法)
顺序查找算法O(n)
二分查找算法O(log n)
插补查找算法O(log log n)
分块查找算法O(log以2为底m的对数+N/m)
斐波拉契查找算法O(log 2n)
哈希查找算法O(1)

上述时间复杂度都是按照各个算法的平均(理想)复杂度进行计算的。实际应用中。情况的不同复杂度就会不同。


http://www.ppmy.cn/news/759167.html

相关文章

bst java_Java的BST ZoneId代表什么?

我在DB中存储了这个时间框架:伦敦(BST)的15:00到16:00的任何一天 当我在此时间帧之间收到事件时,我需要执行一个程序IF. 我现在在巴黎(16:22)运行测试,在伦敦是15:22(因此在存储在数据库中的时间帧之间). 这是我的代码 // create Local Date Time from what I have …

BST原理剖析及Java实现

BST原理剖析及Java实现 BST概念BST 实现原理BST 查找原理BST 插入原理BST 删除原理 Java实现二叉查找树BST类测试 BST 存在的问题 BST概念 二叉查找树(Binary Search Tree,简称BST)是一棵二叉树,它的左子节点的值比父节点的值要小,右节点的值…

【C++】二叉搜索树(BST)

一.基本介绍 特征: 二叉搜索树,也被称为二叉查找树、有序二叉树或者排序二叉树。 ∙ \bullet ∙ 一般来说输入的第一个数作为根结点,当继续输入数时,小于根结点的放在根结点左边,大于根结点的放在根结点右边。 ∙ \…

数据结构及算法 | Java数据结构——BST二叉搜索树(上)

一、BST相关概念 BST(二叉搜索树)可以实现增加、删除、搜索的时间复杂度都为log2n(以2为底,并非2n)。关于树的基础概念根据图中数据解释以便理解: 58是根节点root;23是58的左孩子;82是58的右孩子&#xf…

二叉查找树(BST)|搜索及插入操作

什么是二叉查找树? 二叉查找树(BST),又名二叉搜索树是一种基于节点的二叉树数据结构,具有以下属性: 节点的左子树仅包含值小于自身值的节点。节点的右子树只包含值大于自身值的节点。左右子树也必须是二…

BST树

目录 一、BST树二、查找操作递归实现非递归实现 三、插入操作递归实现非递归实现 四、删除操作递归实现非递归实现 一、BST树 二叉查找树(Binary Search Tree),又名二叉搜索树或二叉排序树。可以是一颗空树,或者是具有下列性质的二叉树&…

LeetCode 938. Range Sum of BST 时间复杂度(O(n))

时间复杂度(O(n)), 搜索二叉树树的遍历 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val x # self.left None # self.right Noneclass Solution:def rangeSumBST(self, r…

BST学习总结

注:这篇文章是本蒟蒻刚学习了BST后写的学习总结,也是我的第一篇blog,请各位大佬多多指教。 目录 在学习BST之前,我们首先要明确为什么要用BST。 什么是BST? 如何存BST? BST的各种操作: 1、…