已收藏
难度:简单
标签:暂无标签
题目描述
采用选择法对15个整数排序,排序完成后各整数按照从大到小的顺序排列。排序完成后输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。
输入
输入共有两行: 第一行输入15个整数. 第二行输入你要查找的整数.
输出
输出你要查找的整数在排好序的数组中是第几个元素.如果该数不在数组中,则输出“wucishu!”。如果输入的数在数组中有多个,则输出此数在排好序后的数组中第一次出现的位置.具体请见Sample Output .
样例输入复制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 15
样例输出复制
1
题目提供者:西南科技大学计算机学院C++程序设计实验指导书 v1.2
时空限制:1000ms/65535kb
通过次数:3578
提交次数:13914
def binarySearch(list,temp):
l = 0
r = len(list) - 1
while l<=r:
mid=l+(r-l)//2
if list[mid]<temp:
r=mid-1
elif list[mid]>temp:
l=mid+1
elif list[mid]==temp:
return mid
return -1
list=list(map(int,input().split()))
n=int(input())
for i in range(0,len(list)-1):
for j in range(i+1,len(list)):
if list[i]<list[j]:
list[i],list[j]=list[j],list[i]
if binarySearch(list,n)+1==0:
print("wucishu!")
else:
print(binarySearch(list,n)+1)
注意排序后的数组是从大到小的,依次不能使用普通的二分查找,而是要反号