Найдите x наименьших целых чисел в списке длины n

У вас есть список из n целых чисел, и вы хотите, чтобы x было наименьшим. Например,

x_smallest ([1, 2, 5, 4, 3], 3) должен вернуть [1, 2, 3] .

Я проголосую за уникальный время выполнения в разумных пределах и даст зеленую отметку лучшему времени выполнения.

Я начну с O (n * x) : создать массив длины x. Пройдите по списку x раз, каждый раз вытаскивая следующее наименьшее целое число.

Правки

  • Вы заранее не представляете, насколько велики или малы эти числа.
  • Вам не важен окончательный порядок, вам просто нужен x наименьший.
  • Это уже обрабатывается в некоторых решениях, но предположим, что, хотя вам не гарантируется уникальный список, вы также не получите вырожденный список, такой как [1, 1, 1, 1, 1] .
12
задан Dave Aaron Smith 21 September 2010 в 21:40
поделиться