• 符号表实现(Symbol Table Implementations)


    符号表的实现有很多方式,下面介绍其中的几种。

    乱序(未排序)数组实现

    这种情况,不需要改变数组,操作就在这个数组上执行。在最坏的情况下插入,搜索,删除时间复杂度为O(n)。

    有序(已排序)数组实现

    这种情况我们就有了排序好的关键字和相应的值。

    通过关键字在数组中存储

    keys[i]为第i位大的key(关键字)

    values[i]就是第i位大key对应的值

    由于元素是按顺序存储在数组中的,找某个元素就可以用简单的二分搜索。最差的情况,搜索时间复杂度为O(log n),插入和删除时间复杂度为O(n)。

    乱序的链表实现

    只需要有两个元素的链表就行了。搜索,插入,删除的时间复杂度都是O(n)。

    有序链表实现

    这种方式下,当我们插入元素时,要保持原素的关键字为有序的(比如大小顺序)。即使链表已经排序好了,最坏情况下的插入,删除,搜索操作时间都要O(n)。

    其它一些实现方法:

    二叉树实现

    平衡二叉树实现

    三元搜索实现

    散列表实现

    各种符号表实现方式的比较

    Implementation Search Insert Delete
    Unordered array n n n
    Ordered Array log n n n
    Unordered List n n n
    Ordered List n n n
    Binary Search Trees (O(log n) on average) log n log n log n
    Balanced Binary Search Tree log n log n log n
    Ternary Search log n log n log n
    Hashing (O(1) on average 1 1 1
  • 相关阅读:
    类函数指针
    resource for machine learning
    蒲丰投针与蒙特卡洛模拟
    IIS5、IIS6、IIS7的ASP.net 请求处理过程比较
    CMD 命令速查手册
    Process, Thread, STA, MTA, COM object
    在托管代码中设置断点(Windbg)
    SidebySide Execution
    .NET Framework 3.5 Architecture
    Overview of the .NET Framework
  • 原文地址:https://www.cnblogs.com/programnote/p/4729455.html
Copyright © 2020-2023  润新知