编写函数,函数功能是查找已排序的不重复数据列表A中的指定元素x,找到给出该数在列表中的下标,找不到输出-1。
#Student start def findx(A,x): high,low=len(A)-1,0 while high>=low: mid=(high+low)//2 if A[mid]==x: return mid elif A[mid]>x: high=mid-1 else: low=mid+1 return -1 #Student End Y = input().split() #输入格式[1,2,3,4,5] 4 A = eval(Y[0]) x = eval(Y[1]) ind = findx(A,x) print(ind)第2关:重复序列的二分搜索
编写函数,函数功能是查找已排序的重复数据列表A中的指定元素x,找到给出该数在列表中第一次出现的下标,找不到输出-1。
#Student start def findx(A,x): high,low=len(A)-1,0 while high>=low: mid=(high+low)//2 if A[mid]==x: p=mid while p>0 and A[p-1]==x: p-=1 return p elif A[mid]>x: high=mid-1 else: low=mid+1 return -1 #Student End Y = input().split() A = eval(Y[0]) x = eval(Y[1]) A.sort() ind = findx(A,x) print(ind)第3关:重复序列二分搜索2
编写函数,函数功能是查找已排序的重复数据列表A中的指定元素x,找到给出该数在列表中最后一次出现的下标,找不到输出-1。
#Student start def findx(A,x): high,low=len(A)-1,0 while high>=low: mid=(high+low)//2 if A[mid]==x: p=mid while p第4关:重复序列二分搜索3x: high=mid-1 else: low=mid+1 return -1 #Student End Y = input().split() A = eval(Y[0]) x = eval(Y[1]) A.sort() ind = findx(A,x) print(ind)
编写函数,函数功能是在已排序的重复数据列表A中,查找比指定的元素x小的最大的数,给出该数在列表中最后一次出现的下标,找不到输出-1。
#Student Start def findx(A,x): high,low=len(A)-1,0 while high>=low: mid=(high+low)//2 if A[mid]==x: p=mid while p>0 and A[p-1]==x: p-=1 return p elif A[mid]>x: high=mid-1 else: low=mid+1 return -1 #Student End Y = input().split() A = eval(Y[0]) x = eval(Y[1]) A.sort() ind = findx(A,x) if ind==-1: print('%d不在列表中'%x) elif ind==0: print('%d已经是列表中最小的数'%x) else: print('比%d小的最大的数是%d最后出现的下标位置为%d'%(x,A[ind-1],ind-1))
求求三连啦。。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)