У меня есть файл с 1 миллионом чисел. Мне нужно знать, как я могу сортировать его эффективно, так что он не останавливает компьютер, и он печатает ТОЛЬКО 10 лучших.
#!/usr/bin/python3
#Find the 10 largest integers
#Don't store the whole list
import sys
def fOpen(fname):
try:
fd = open(fname,"r")
except:
print("Couldn't open file.")
sys.exit(0)
all = fd.read().splitlines()
fd.close()
return all
words = fOpen(sys.argv[1])
big = 0
g = len(words)
count = 10
for i in range(0,g-1):
pos = i
for j in range(i+1,g):
if words[j] > words[pos]:
pos = j
if pos != i:
words[i],words[pos] = words[pos],words[i]
count -= 1
if count == 0:
print(words[0:10])
Я знаю, что это сортировка сортировки, я не уверен, что будет лучше всего делать.