编写一个程序,包括主函数和如下子函数。(1) 输入10个无序的整数; (2) 用起泡方法从大到小排序; (3) 要求输入一个整数,用折半查找法找出该数,若存在,在主函数中输出其所处的位置,否则,插入适当位置。
时间: 2024-12-14 11:23:45 浏览: 16
这是一个典型的编程练习题目,涉及到了基本的数据输入、排序和查找操作。这里提供一个 Python 的解决方案:
```python
def input_numbers():
"""
(1) 输入10个无序的整数
"""
numbers = []
for _ in range(10):
number = int(input("请输入第 {} 个整数:".format(_+1)))
numbers.append(number)
return numbers
def bubble_sort_descending(numbers):
"""
(2) 用起泡方法从大到小排序
"""
n = len(numbers)
for i in range(n-1):
for j in range(n-i-1):
if numbers[j] < numbers[j+1]: # 从大到小排序条件
numbers[j], numbers[j+1] = numbers[j+1], numbers[j]
return numbers
def binary_search(numbers, target):
"""
(3) 用折半查找法找出指定整数及其位置
"""
low, high = 0, len(numbers) - 1
while low <= high:
mid = (low + high) // 2
if numbers[mid] == target:
return mid
elif numbers[mid] < target:
low = mid + 1
else:
high = mid - 1
# 如果未找到,则返回插入位置
return low
def main():
unsorted_numbers = input_numbers()
sorted_numbers = bubble_sort_descending(unsorted_numbers)
target = int(input("请输入要查找的整数:"))
position = binary_search(sorted_numbers, target)
if position != len(sorted_numbers):
print("找到了数字 {}, 它在排序后的数组中的位置是 {}".format(target, position))
else:
print("数字 {} 不在排序后的数组中.".format(target))
# 插入操作略去,因为题目未明确是否需要在已排序数组中插入
# 可以根据 position 选择 insert 或者在原位置更新数组
if __name__ == "__main__":
main()
```
在这个程序中,`input_numbers` 函数用于接收用户的输入并创建一个列表,`bubble_sort_descending` 通过起泡排序算法将数字按降序排列,`binary_search` 则实现了二分查找。`main` 函数整合了这三个功能,并在找到目标值时显示其位置,否则说明目标值不在数组中。
阅读全文