提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
查找是数据结构的一种基本操作。查找算法依赖于数据结构,不同的数据结构需要采用不同的查找算法。
提示:以下是本篇文章正文内容,下面案例可供参考
二、使用步骤
读入数据
代码如下(示例):
#顺序查找 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 a = SeqList(items) print(a.seqSearch(8)) print(a.binarySearch(8)) print(a.block_search(3,8))
总结
顺序查找既适用于顺序表,又适用于单链表,并且对表中元素排列依次序无要求。顺序表查找的时间复杂度为O(n),平均查找长度为(n+1)/2。