use BinaryHeap;
/// Sort an array using heap sort
///
/// # Parameters
///
/// - `arr`: A vector to sort in-place
///
/// # Type parameters
///
/// - `T`: A type that can be checked for equality and ordering e.g. a `i32`, a
/// `u8`, or a `String`.
///
/// # Undefined Behavior
///
/// Does not work with `f32` and `f64` vectors.
///
/// # Examples
///
/// ```rust
/// use algorithmplus::sort::heap_sort;
///
/// let mut ls = vec![3, 2, 1];
/// heap_sort(&mut ls);
///
/// assert_eq!(ls, [1, 2, 3]);
/// ```