python脚本,从5000个书中选出10个最大的数,并把10个数的次序号码打印出来
时间: 2024-03-02 10:49:18 浏览: 20
可以使用堆排序算法来解决这个问题。具体步骤如下:
1. 读取5000个数,并将它们放入一个最小堆中。
2. 当堆中元素数量大于10时,将堆顶元素弹出。
3. 当堆中元素数量等于10时,将堆中元素的次序号码打印出来。
4. 重复步骤2和3,直到读取完所有的5000个数。
Python代码如下:
```python
import heapq
# 读取5000个数
numbers = []
with open('numbers.txt') as f:
for line in f:
numbers.append(int(line.strip()))
# 使用最小堆来选出10个最大的数
largest_numbers = []
for i, num in enumerate(numbers):
if i < 10:
heapq.heappush(largest_numbers, (num, i))
else:
if num > largest_numbers[0][0]:
heapq.heappop(largest_numbers)
heapq.heappush(largest_numbers, (num, i))
if i == 4999:
break
# 打印10个最大数的次序号码
for num, index in sorted(largest_numbers, reverse=True):
print(index)
```
其中,假设5000个数保存在一个名为`numbers.txt`的文本文件中,每行一个数。该程序将读取这个文件,并使用最小堆来选出10个最大的数,并打印出它们的次序号码。