• 《算法图解》之散列表


    第五章讲述散列表,在Python中实现为字典,以散列函数与数组等构成,优点兼具数组与链表,防止重复,可以模拟映射关系。

    散列表实现

    散列函数 + 数组 实现散列表

    散列函数

    散列函数是这样的函数,即无论给它什么数据,它都还你一个数字。专业术语来说就是,散列函数“将输入映射到数字”。散列函数有两个特点,一是它必须是一致的,即将同样的输入映射到相同的索引;二是它应将不同的输入映射到不同的索引

    冲突

    不同输入映射到相同的输出上,这就是冲突。如何处理冲突呢,在相同输出上创建一个链表。

    填装因子

    散列表包含的元素数/位置总数,填装因子度量的是散列表中有多少位置是空的。一旦填装因子大于0.7,就调整散列表的长度。

    散列表用途

    查找

    创建一个电话簿

    phone_book = dict()                                                                
    phone_book = {}                                                                    
    phone_book['jenny'] = 8675309                                                      
    phone_book['emergency'] = 911                                                      
    print(phone_book['jenny'])
    

    防止重复

    管理一个投票站

    voted = {}
    
    def check_voter(name):
        if voted.get(name):
            print('kick them out!')
        else:
            voted[name] = True
            print('let them vote!')
    
    check_voter('tom')
    check_voter('mike')
    check_voter('mike')
    
    

    缓存

    用作网页缓存

    cache = {}
    def get_page(url):
        if cache.get(url):
            return cache[url]
        else:
            data = get_data_from_server(url)
            cache[url] = data
            return data
    
    
  • 相关阅读:
    Who Gets the Most Candies? POJ
    Chrome DevTools谷歌浏览器开发者工具评估资源加载时间
    Array.isArray (Array) – JavaScript 中文开发手册
    CSS3 @keyframes 规则
    inherit (Values & Units) – CSS 中文开发手册
    CSS #id 选择器
    isgraph (Strings) – C 中文开发手册
    PHP juliantojd() 函数
    Navigator javaEnabled() 方法
    ionic checkbox
  • 原文地址:https://www.cnblogs.com/okokabcd/p/9564045.html
Copyright © 2020-2023  润新知