已知一个数组拥有10个无序的元素,请从键盘任意输入一个x,请用二分法查找x是否存在数组中,若存在,则把x从数组中删除,若不存在,则显示“not exist!
时间: 2023-06-05 11:47:41 浏览: 123
题目意思:
已知一个数组拥有10个无序的元素,请从键盘任意输入一个x,并用二分法查找x是否存在于数组中,若存在,则从数组中删除x,若不存在,则显示“not exist!”
回答:
这道题需要用二分法查找x是否在数组中存在。二分法是一种查找算法,速度比顺序查找更快。
二分法查找的步骤如下:
1.将数组按照大小排序
2.找到数组的中间元素
3.如果中间元素等于要查找的元素,返回该元素下标
4.如果中间元素大于要查找的元素,则在数组的左边继续查找
5.如果中间元素小于要查找的元素,则在数组的右边继续查找
根据题目要求,我们需要用二分法查找x是否存在于数组中,如果存在,则删除x,如果不存在,则显示“not exist!”
当x存在于数组中时,我们需要找到x在数组中的下标,然后将其从数组中删除。
当x不存在于数组中时,我们直接显示“not exist!”即可。
代码实现:
array = [10, 2, 30, 4, 50, 6, 70, 8, 90, 100]
x = int(input("请输入要查找的数:"))
left = 0
right = len(array)-1
mid = 0
exist = False
while left <= right:
mid = (left+right)//2
if array[mid] == x:
exist = True
break
elif array[mid] < x:
left = mid+1
else:
right = mid-1
if exist:
del array[mid]
print(array)
else:
print("not exist!")
阅读全文