Как повысить эффективность моего кода? Я пытаюсь отсортировать список - PullRequest
0 голосов
/ 17 марта 2020

Это то, что я написал для ввода списка и его сортировки. Он генерирует ошибку TLE.

n=int(input())
l=[]
for i in range(n):
    a=int(input())
    l.append(a)
    l.sort()
for j in l:
    print(j)   

Это код, который был принят

import sys


n = int(input().strip())
unsorted = []
unsorted_i = 0
for unsorted_i in range(n):
   unsorted_t = str(input().strip())
   unsorted.append(unsorted_t)

unsorted.sort(key = lambda x : int(x))
for u in unsorted:
    print(u)

, почему человек сначала взял элементы списка в виде строки, а затем преобразовал их в int. Есть ли у него существенное преимущество?

1 Ответ

1 голос
/ 17 марта 2020

Второй код ужасен. Взять элементы списка в виде строки и преобразовать их для каждого сравнения во время сортировки просто ужасно.

Ваш код в порядке, вы просто ошиблись при сортировке каждый раз, когда добавляете элемент в список. Вы должны сортировать только один раз, когда у вас есть все элементы в списке, т. Е. Не целевая строка l.sort() и извлечь ее из для l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...