第四章 查找与哈希
常见查找算法
查找分为动态查找和静态查找 动态查找 在查找的过程中经常性添加,删除或更新,比如上网查找 静态查找 在查找的过程中不会添加,删除或更新,比如符号查找
顺序查找
将数据一项一项按顺序逐个查找,不管数据顺序如何,都从头到尾遍历一遍 优点 查找前不需要任何处理或排序 缺点 查找速度较慢
#顺序查找 import random val = 0 data = [0] * 80 for i in range(80): data[i] = random.randint(1, 150) while val != -1: find = 0 val = int(input("请输入查找键值(1-150),输入-1离开")) for i in range(80): if data[i] == val: print("在第%3d个位置找到键值[%3d]" % (i+1, data[i])) find += 1 if find == 0 and val != -1: print("没有找到[%3d]" % val) print("数据内容为:") for i in range(10): for j in range(8): print("%2d[%3d]" % (i*8+j+1, data[i*8+j]), end="") print("") #运行结果 # 请输入查找键值(1-150),输入-1离开87 # 没有找到[ 87] # 请输入查找键值(1-150),输入-1离开86 # 在第 57个位置找到键值[ 86] # 请输入查找键值(1-150),输入-1离开-1 # 数据内容为: # 1[ 53] 2[ 96] 3[ 36] 4[116] 5[130] 6[ 62] 7[ 9] 8[ 80] # 9[ 5]10[121]11[ 92]12[131]13[ 46]14[106]15[138]16[ 2] # 17[ 84]18[109]19[ 68]20[ 88]21[ 39]22[ 7]23[ 73]24[127] # 25[ 79]26[ 64]27[123]28[ 69]29[ 56]30[ 51]31[ 32]32[ 43] # 33[133]34[ 70]35[116]36[112]37[ 33]38[ 12]39[ 36]40[ 7] # 41[ 41]42[ 20]43[148]44[ 88]45[106]46[ 50]47[ 14]48[ 42] # 49[110]50[ 62]51[ 67]52[ 51]53[ 64]54[ 82]55[150]56[ 60] # 57[ 86]58[ 72]59[121]60[ 78]61[ 33]62[ 45]63[100]64[ 2] # 65[133]66[116]67[ 72]68[127]69[ 17]70[140]71[101]72[ 38] # 73[114]74[129]75[ 32]76[ 41]77[ 45]78[ 64]79[123]80[ 71]