2011-05-11 9 views

Respuesta

7
  1. Puede utilizar un mínimo-montón y hacerlo en O (n * (log (N))):

    heap = new Min-Heap(N) 
        foreach line in text: 
         if length(line) > heap.min(): 
         heap.pop() 
         heap.insert(line) 
        foreach line in heap: 
         print to stdout: line. 
    
  2. también podría hacerse en O (n) usando Select (N) (que selecciona el N-ésimo número) seguido de una partición alrededor del N-ésimo número (que ordena todos los que tienen un tamaño mayor o igual al N-ésimo número de un lado).

    i = Select(lines, N) 
        partition(lines, i) 
        for i to size(lines): 
         print to stdout: lines[i] 
    
+0

Tiene el tamaño del montón a ser N. – shashuec

+0

Aye, se olvidó de mencionar que, gracias – Gal

+0

u puede explicar la Selección (N) .. gracias – shashuec

Cuestiones relacionadas