哈希查找对比普通遍历查找所需时间

别说谁变了你拦得住时间么 提交于 2019-12-04 18:13:00

  今天接触到了哈希算法。处于好奇心,我写了一段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))     
           

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

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!