• 查找


    1. 顺序查找

    从指定起点处的元素开始依次查找,直到找到满足条件的目标值结束。

    平均时间复杂度:O(n/2)
    最坏情况:O(n)

    2. 二分查找

    二分查找的原理是将当前的查询的集合从中点处拆分为两个子集,然后将中点处的值与目标值进行比较,确定目标值所在的子集,再对这子集再次进行拆分,直到找到目标元素或者集合无法拆分时结束。

    仅适用于按值排序的集合,对于无序集,必须先进行排序

    时间复杂度:O(log2(n))

    3. 插值查找

    在二分查找的基础之上,继续进行优化,使查找更具备自适应性,优化后时间复杂度可以达到O(log2(log2(n)))。
    使用条件:序列单调且元素分布均匀。(通常只用二分查找就够了)

    4. 分块查找

    原理是将序列划分成若干子块,对于被查找的元素,先找到所在的子块,然后再在子块内进行顺序查找。这样可以跳过许多不必要的查找,提升顺序查找的效率。

    5. 哈希查找

    原理是通过一个散列函数将元素值与存储地址(数组的下标)对应起来,这样可以通过O(1)的时间直接查找指定元素,是一种“空间换时间” 的思想。

    6. 树表查找

    二叉查找树(BST – Binary Search Tree)的原理是先根据待查找的数据创建一棵树,在保证每个节点的左分支小于右分支的条件下,不断插入元素。查找时将被查找的值依次与树上的父节点比较大小,确定被查找的值所在的分支。

  • 相关阅读:
    Google 的开源技术protobuf 简介与例子(转)
    set 学习笔记
    map 学习笔记
    网络编程-socket学习笔记
    POSIX线程_学习笔记
    shell 脚本练习
    vector 学习笔记
    用archlinux作为日常开发机的感受
    python中获取上一个月一号的方法
    golang在linux下的开发环境部署[未完]
  • 原文地址:https://www.cnblogs.com/syyy/p/8569740.html
Copyright © 2020-2023  润新知