class Sort:
def __init__(self):
pass
def order_sort(self, lst, elem):
pos = 0
flag = False
while pos < len(lst) and not flag:
if elem == lst[pos]:
flag = True
return flag, pos+1
else:
pos += 1
return flag, pos+1
def binary_sort1(self, lst, elem):
mid = None
flag = False
first = 0
last = len(lst) - 1
while first<=last and not flag:
mid = (first + last) // 2
if lst[mid] == elem:
flag = True
else:
if lst[mid] > elem:
last = mid - 1
else:
first = mid + 1
print("mid", mid)
if mid >= len(lst)-1 and not flag:
mid = None
else:
mid += 1
return flag, mid
def binary_sort2(self, lst, elem):
mid = None
flag = False
first = 0
last = len(lst) - 1
if len(lst) == 0:
return False
else:
mid = (first + last) // 2
if lst[mid] == elem:
flag = True
return flag
else:
if lst[mid] > elem:
return self.binary_sort2(lst[:mid], elem)
else:
return self.binary_sort2(lst[mid+1:], elem)
if __name__ == '__main__':
s = Sort()
lst = [1,2,3,4]
elem = 3
flag, pos = s.order_sort(lst, elem)
print(flag)
print(pos)
flag, pos = s.binary_sort1(lst, elem)
print(flag)
print(pos)
flag = s.binary_sort2(lst, elem)
print(flag)
print(pos)
Python实现二分查找
最新推荐文章于 2023-05-27 17:28:41 发布