#include<stdio.h>
void main()
{
int a[20],x,i,start,end
printf("input 20 numbers:\n")
for(i=0i<20i++) scanf("%d",&a[i])
printf("please enter the number:\n")
scanf("%d",&x)
for(start=0,end=19start<=end)
{
i=start+(end-start)/2
if (x==a[i])
{
printf("%d",i+1)
getch()
return
}
else if (x>a[i]) end = i-1
else start=i+1
}
}
def find(array,value):start,end=0,len(array)-1
while start<=end:
mid=(start+end)//2
if a[mid][0]==value:
return mid
咐局 elif a[mid][0]>value:
end=mid-1
else:
start=mid+1
return None
if __name__=="__main__"袜差:
array=[ ['201801', '张三'], ['201822', 'Andy Lee'], ... ,['20189X','Austin Hu'] ],省略数据请自行补充
studentno=input("请输入指定学号")
index=find(array,studentno)
告简皮 if index is None:
print("未找到学号:%s"%studentno)
else:print(array[index])
将明氏闭这一句if(f=0)printf("Not Found")
改为
if(start>end)
printf("Not Found")
你的程序的问题:激裂如果输入的数据不在数组中,f值也会改变,因为第一次循环的时候if、else if、else必然会执行一个核袜,而其中的每个都会改变f的值。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)