zoukankan      html  css  js  c++  java
  • 哈希查找对比普通遍历查找所需时间

      今天接触到了哈希算法。处于好奇心,我写了一段python代码来对比这两种查找方式在进行随机大规模查找时的效率差异。

      

    import time
    import random
    a=[12,234,345,67,7,88,834,4353,56,324,123,567,53,45,234,123,123]  
    hashList={}   #哈希表
    
    def r():    #生成一个随机被查找值,用来模拟随机查找
        r=random.randint(0,16)
        n=a[r]
        return n
    
    def find(num):    #普通遍历查找
        for l in a:
            if(num==l):
                continue
                
    
    def getHash():    #生成哈希表
        for l in a:
            key=(l*5+3)^2
            hashList[key]=l
    
    def hashfind(num):    #哈希查找
        key=(num*5+3)^2
        return
    
    normalTime=0
    hashTime=0
    t1=time.time()   #计算生成哈希表需要时间   T2-T1
    getHash()
    t2=time.time()  
    
    for l in range(2000000):      #进行二百万次模拟
        n=r()
        start=time.time()
        find(n)
        end=time.time()
        nt=end-start
        normalTime=normalTime+nt    #普通遍历查找总时间
    
        start1=time.time()
        hashfind(n)
        end1=time.time()
        nt1=end1-start1
        hashTime=hashTime+nt1        #哈希查找总时间
    
    print('普通查找二百万次需要时间:'+str(normalTime))
    print('hash查找二百万次需要时间:'+str(hashTime+t2-t1))     
               

    最后的结果当然是哈希查找所需的时间更少。基本遍历查找所需时间是哈希查找所需时间的三倍左右。

    以上代码或结论如有错误,欢迎指出。

  • 相关阅读:
    [计算机基础]回调函数
    [Android学习笔记]双缓冲绘图技术
    [数据结构和算法]折半插入排序算法笔记
    为Eclipse添加Java和Android SDK源代码
    Eclipse Tips
    Eclipse常用插件
    [数据结构]基本概念2
    Nginx中让 重写后的路径 自动增加斜线 /
    mysql 断电 启动不了 start: Job failed to start
    uglifyjs 压缩js
  • 原文地址:https://www.cnblogs.com/BreezeFeng/p/11876873.html
Copyright © 2011-2022 走看看