zoukankan      html  css  js  c++  java
  • 散列表

    散列表

    简单地来说,通过某种函数关系将输入的数据映射为数字,使得数字与数据有着一一对应的关系。

     其中,散列函数必须满足一定的要求:

    •  它必须是一致的。例如,当你输入mag时得到4,那么每当输入mag时,其结果也得是4
    •    它必须将用户的输入映射到不同的数值。例如,当你输入不同的数据时,如果每次都映射到1,那么显然这个散列函数不是一个好的散列函数。最好情况下,每一个数据映射到不同的数值

       python提供的散列函数为字典。

     例如:

        book = {"aa":"3,12","bb":"231","cc":"5.77"}

     散列表的应用

    •   将散列表应用于查找。例如,将119.75.218.70映射为www.baidu.com。
    •       防止元素重复。
    •       将散列表用作缓存。访问网站的一个大致流程为:你向xxxxx网站服务器发出一个请求,然后服务器做一些 处理,返回个网页给你,最后你就看到所呈现的网站。

        缓存原理:记录你最近所访问的数据,如果你需要该数据,服务器可以直接将其返回给你,不必进行大量的查找操作,从而节约时间。

        缓存是一种常用的加速方式,而缓存的数据就存储在散列表中。

        其大致过程如下:

        

           测试代码:

    cache = {}
    
    def get_page(url):
        if cache.get(url):
            return cache[url]
        else:
            data = get_data_from_server(url)
            cache[url] = data
            return data

      性能分析

        由于常规的散列表都是一一映射的关系,查找、删除、修改值,其时间复杂度均为O(1)

         

  • 相关阅读:
    API之绘图(转)
    API之子窗口创建 (转)
    函数调用规范__cdecl和__stdcall的区别一目了然(表格形式)(二)
    _cdecl 和_stdcall及其他调用方式 (一)
    sizeof的深入理解
    VC++中2进制,10进制,16进制相互转换
    传说中的数据结构
    字符串扩展
    数据结构实验之链表七:单链表中重复元素的删除
    数据结构实验之栈一:进制转换
  • 原文地址:https://www.cnblogs.com/vipchenwei/p/6879473.html
Copyright © 2011-2022 走看看