k'inci en büyük elemanı bulmak için bütün listeyi sıralamak gerekmez. Boyu k'yi geçmeyen bir heap tut: her elemanı ekle, heap k'den büyürse en küçüğünü at. Sonunda heap'te en büyük k eleman kalır ve en küçükleri, yani heap[0], k'inci en büyüktür.
import heapqheap = []for v in values:heapq.heappush(heap, v)if len(heap) > k:heapq.heappop(heap)return heap[0]
İkinci kalıp: "hep en küçük ikisini al, birleştir, sonucu geri koy". İpleri en ucuza birleştirmek böyledir: erken birleştirdiğin ip sonraki her birleştirmede yeniden sayılır, bu yüzden kısa olanlar önce birleşmelidir. Sıralı bir liste burada işe yaramaz, çünkü birleşen ip sıranın ortasına düşer; heap onu yerine kendisi koyar.