defsequentialSearch(alist, target):
pos =0
found =Falsewhile pos <len(alist)andnot found:if alist[pos]== target:
found =Trueelse:
pos +=1return found
sequentialSearch([1,19,20,4,5,5,45,32],32)
True
sequentialSearch([1,19,20,4,5,5,45,32],12)
False
1.2、有序
deforderedSearch(alist, target):
found =False
stop =False
pos =0while pos <len(alist)andnot found andnot stop:if alist[pos]== target:
found =Trueelse:if alist[pos]> target:
stop =Trueprint("stopped at: ", pos)else:
pos +=1return found
orderedSearch([1,4,7,9,13,49,50,99,130],13)
True
orderedSearch([1,4,7,9,13,49,50,99,130],48)
stopped at: 5
False
orderedSearch([1,4,7,9,13,49,50,99,130],130)
True
2、二分查找
defbinerySerch(alist, target):
found =False
front =0
last =len(alist)-1while front <= last andnot found:
mid =(front + last)//2if alist[mid]== target:
found =Trueelse:if alist[mid]> target:
last = mid -1else:
front = mid +1return found
binerySerch([1,2,3,4,7,8,9],6)
False
binerySerch([1,2,3,4,7,8,9],9)
True
binerySerch([1,2,3,4,7,8,9],4)
True
哈希查找
defHash(strs, L):sum=0for ch in strs:sum+=ord(ch)returnsum%L
Hash('cat',11)
4
classHashTable:def__init__(self):
self.size =11
self.slots =[None]* self.size
self.data =[None]* self.size
defput(self, key, data):
hashvalue = self.hashfunction(key, self.size)if self.slots[hashvalue]==None:
self.data[hashvalue]= data
self.slots[hashvalue]= key
else:if self.slots[hashvalue]== key:
self.data[hashvalue]= data
else:
nextslot = self.rehash(hashvalue, self.size)while self.slots[nextslot]!=Noneand self.slots[nextslot]!= key:
nextslot = self.rehash(nextslot, self.size)if self.slots[nextslot]==None:
self.slots[nextslot]= key
self.data[nextslot]= data
else:
self.data[nextslot]= data
defhashfunction(self, key, size):return key % size
defrehash(self, oldhash, size):return(oldhash +1)% size
defget(self, key):
startslot = self.hashfunction(key, self.size)
data =None
stop =False
found =False
position = startslot
while self.slots[position]!=Noneandnot found andnot stop:if self.slots[position]== key:
found =True
data = self.data[position]else:
position = self.rehash( position, self.size)if position == startslot:
stop =Truereturn data
def__getitem__(self, key):return self.get(key)def__setitem__(self, key,data):
self.put(key,data)
查找顺序查找二分查找哈希查找1、顺序查找1.1、无序def sequentialSearch(alist, target): pos = 0 found = False while pos < len(alist) and not found: if alist[pos] == target: found = T...