常用查找算法的Python实现
1. 顺序查找
def search(lis,item):
for i in range(len(lis)):
if lis[i]==item:
return i
return -1
n=int(input("请输入数据个数:"))
nums=[]
for i in range(n):
x=int(input("请输入第"+str(i+1)+"个数:"))
nums.append(x)
x=int(input("请输入要查找的数据:"))
result=search(nums,x)
if result==-1:
print("要查询的数据不存在!")
else:
print(x,"是列表的第",result+1,"个数(首次出现)",sep="")
2. 二分查找
def binarySearch(lis,item):
left=0
right=len(lis)-1
mid=(left+right)//2
while left<=right:
if item==lis[mid]:
return mid
elif item<lis[mid]:
right=mid-1
else:
left=mid+1
mid=(left+right)//2
return -1
n=int(input("请输入数据个数:"))
nums=[]
for i in range(n):
x=int(input("请输入第"+str(i+1)+"个数:"))
nums.append(x)
x=int(input("请输入要查找的数据:"))
result=binarySearch(nums,x)
if result==-1:
print("要查询的数据不存在!")
else:
print(x,"是列表的第",result+1,"个数(首次出现)",sep="")