Python 数据结构
Python Data Structures
搜索
参考内容:
1. HYPERLINK /courselib/static/pythonds/index.html Problem Solving with Python
Chapter5: Search and Sorting? HYPERLINK /courselib/static/pythonds/SortSearch/searching.html \l searching online_link
2. HYPERLINK /wiki/Introduction_to_Algorithms 算法导论
搜索(或查找)总结
(1)顺序查找:O(n)
(2)二分查找:O(lgn)
(3)Hash查找:O(1)
概念:hash,hash table,hash function? HYPERLINK /wiki/%E5%93%88%E5%B8%8C%E8%A1%A8 \l .E5.A4.84.E7.90.86.E7.A2.B0.E6.92.9E 哈希表_on_wiki
常用的哈希函数:
1.reminder method:取余数(size=11,下图对11取余数,例如17取余数得到6)
2.folding method: 分组求和再取余数
3.mid-square method:平方值的中间两位数取余数
4.对于由字符的元素可以尝试使用ord函数来将字符串转换成一个有序的数值序列。在Python中ord函数可以得到对应字符的ASCII码值。将所有字符的码值累加再取余数。
但是,对于通过回文构词法构成的字符串它们得到的值总是一样,为了解决这个问题,可以根据字符的位置添加一个权重。
From wiki
使用哈希查找,难免遇到冲突,该如何解决冲突(Collision Resolution)呢?
常用的解决冲突的办法:
1.open address(开放寻址):线性探测(linear probing)下一个位置,缺点是容易造成聚集现象(cluster),解决聚集现象的办法是跳跃式地查找下一个空槽。数值的顺序:(54, 26, 93, 17, 77, 31, 44, 55, 20).
2.quadratic probing(平方探测):一开始的hash值为h,如果不是空槽,那就尝试h+1,还不是空槽就尝试h+4,依次继续尝试h+9,h+16等等。
3.chain:利用链表链接起来
From wiki
分析hash查找的性能:一般使用平均查找长度来衡量,和装载因子有关
散列表的载荷因子定义为:α?= 填入表中的元素个数 / 散列表的长度?α是散列表装满程度的标志因子。由于表长是定值,α与“填入表中的元素个数”成正比,所以,α越大,表明填入表中的元素越多,产生冲突的可能性就越大;反之,α越小,标明填入表中的元素越少,产生冲突的可能性就越小。实际上,散列表的平均查找长度是载荷因子α的函数,只是不同处理冲突的方法有不同的函数。?对于开放定址法,荷载因子是特别重要因素,应严格限制在0.7-0.8以下。超过0.8,查表时的CPU缓存不命中(cache missing)按照指数曲线上升。因此,一些采用开放定址法的hash库,如Java的系统库限制了荷载因子为0.75,超过此值将resize散列表。
From wiki
下面的代码包含了顺序查找,二分查找,哈希查找(size=11, plus 1, reminder method)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106def sequential_search(a_list, item):
pos = 0
found = False
while pos len(a_list) and not found:
if a_list[pos] == item:
found = True
else:
pos = pos+1
return foun
您可能关注的文档
- PKI的密码学基础 - 欢迎莅临科苑星空bbs站.ppt
- Plasma-enhanced chemical vapor deposition synthesis of vertically oriented graphene nanosheets.ppt
- PLASTIC_MATERIAL技术.ppt
- PLC 高考理论试题.doc
- PIOVAN干燥机培训资料.pptx
- Pinnacle3系统介绍.ppt
- PLC ESD模块LED解释.doc
- PhysicalGeography2物质2014.ppt
- PIV模拟.ppt
- Pinnacle 软件中文版操作手册.doc
- 中国国家标准 GB/T 6675.9-2025玩具安全 第9部分:化学及类似活动的实验玩具.pdf
- 《GB/T 6675.9-2025玩具安全 第9部分:化学及类似活动的实验玩具》.pdf
- GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求.pdf
- 中国国家标准 GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求.pdf
- 《GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求》.pdf
- 《GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法》.pdf
- GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法.pdf
- 中国国家标准 GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法.pdf
- 中国国家标准 GB/T 33772.3-2025质量评定体系 第3部分:印制板及层压板最终产品检验及过程监督用抽样方案的选择和使用.pdf
- 《GB/T 33772.3-2025质量评定体系 第3部分:印制板及层压板最终产品检验及过程监督用抽样方案的选择和使用》.pdf
原创力文档

文档评论(0)