Найдите K-е наибольшее число за один проход без сохранения всего массива

Я имею в виду алгоритм

  • сохранить MaxHeap размера K
  • вставить каждый элемент
  • исключить меньшее значение, если куча заполнена
  • В конце концов, Kth max является меньшим из MaxHeap

. Это даст мне O (NlogK). Есть лучший алгоритм? Я не могу сделать быстрый выбор, потому что массив не может быть сохранен в памяти.

5
задан templatetypedef 31 January 2012 в 19:21
поделиться