提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、使用步骤
- 读入数据
- 总结
前言
查找是数据结构的一种基本操作。查找算法依赖于数据结构,不同的数据结构需要采用不同的查找算法。
提示:以下是本篇文章正文内容,下面案例可供参考
二、使用步骤
读入数据
代码如下(示例):
#顺序查找
class SeqList(object):
def __init__(self,items):
#items存放查找表
self.items = items
# self.seqSearch()
#顺序查找
def seqSearch(self,key):
for i in range(len(self.items)):
if self.items[i] == key:
return i
return -1
#二分查找
def binarySearch(self,key):
low = 0
high = len(self.items) - 1
while low <= high:
mid = (low+high)//2
if self.items[mid] == key:
return mid
elif self.items[mid] < key:
low = mid + 1
else:
high = mid - 1
return -1
def __binary_search(self,li,key):
low = 0
high = len(li) - 1
while low <= high:
mid = (low + high) // 2
if li[mid] == key:
return mid
elif li[mid] < key:
low = mid + 1
else:
high = mid - 1
return -1
#分块查询
def block_search(self,space,key):
length = len(self.items)
#block_length块数,数据分为几块
block_length = length//space
if block_length * space != length:
block_length += 1
for block_i in range(block_length):
block_list = []
for i in range(space):
if block_i*space+i >= length:
break
block_list.append(self.items[block_i*space+i])
result = self.__binary_search(block_list,key)
if result != -1:
return block_i*space+result
if __name__ == "__main__":
items = [3,5,6,7,8,9,11]
#能查找出指定关键字的下标值,找不到就返回-1
总结
顺序查找既适用于顺序表,又适用于单链表,并且对表中元素排列依次序无要求。顺序表查找的时间复杂度为O(n),平均查找长度为(n+1)/2。