zoukankan      html  css  js  c++  java
  • 七大查找算法

    1、顺序查找:

    成功时间复杂度O((n+1)/2),失败:O(n)【在顺序存储或链式存储下查找】

    2、二分查找:

    对半查找,必须在有序的条件下,平均时间复杂度O(log2n),失败O(log2(n+1))

    3、插值查找:

    在表长较大且数据分布均匀情况下,插值查找比二分查找要好,插值就是1/4,1/5等来分,不一定对半分。成功失败时间复杂度都是O(log2(log2n))

    4、散列查找(哈希查找):

    可以设计一个函数(哈希函数, 也叫做散列函数),使得每个元素value的关键字key都与一个函数值(即数组下标)相对应,于是用这个数组单元来存储这个元素value;【可能出现对于不同的元素,却计算出了相同的函数值,这样就产生了"冲突"】

    哈希表两大特点:直接寻址和解决冲突。

      算法流程:

      1)用给定的哈希函数构造哈希表;
      2)根据选择的冲突处理方法解决地址冲突;
        常见的解决冲突的方法:拉链法和线性探测法。
      3)在哈希表的基础上执行哈希查找。
    哈希表是一个在时间和空间上做出权衡的经典例子。如果没有内存限制,那么可以直接将键作为数组的索引。那么所有的查找时间复杂度为O(1);如果没有时间限制,那么我们可以使用无序数组并进行顺序查找,这样只需要很少的内存。哈希表使用了适度的时间和空间来在这两个极端之间找到了平衡。只需要调整哈希函数算法即可在时间和空间上做出取舍。
    单纯论查找复杂度:对于无冲突的Hash表而言,查找复杂度为O(1)(注意,在查找之前我们需要构建相应的Hash表)。
    Hash是一种典型以空间换时间的算法。

    5、BST

    6、红黑树

  • 相关阅读:
    win7 64位系统,vs2010下配置OpenGL开发环境
    OpenCV stereo matching 代码 matlab实现视差显示
    Cocos2d-x 3.x游戏开发之旅
    芯片验证漫游指南
    名师讲坛:PHP开发实战权威指南
    Python带我起飞:入门、进阶、商业实战
    新编Excel会计与财务管理应用大全(2016实战精华版)
    CorelDRAW X7中文版完全自学宝典
    HTML5 canvas开发详解(第2版)
    中文版3ds Max 2014--VRay效果图制作实用教程
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/8971379.html
Copyright © 2011-2022 走看看