4
from libcpp cimport bool
5
from libcpp.algorithm cimport make_heap, sort_heap
6
from libcpp.vector cimport vector
9
# XXX should use std::greater, but I don't know how to wrap that.
10
cdef inline bool greater(const int &x, const int &y):
14
def heapsort(l, bool reverse=False):
16
>>> heapsort([3, 5, 1, 0, 2, 4])
18
>>> heapsort([3, 5, 1, 0, 2, 4], reverse=True)
21
cdef vector[int] v = l
24
make_heap(v.begin(), v.end(), &greater)
25
sort_heap(v.begin(), v.end(), &greater)
27
make_heap(v.begin(), v.end())
28
sort_heap(v.begin(), v.end())