use super::signature::*;
pub struct Insertion;
impl<T: Sortable> Sort<T> for Insertion {
fn sort(&self, list: &[T]) -> Vec<T> {
let mut sorted: Vec<T> = list.iter().cloned().collect();
for i in 0..sorted.len() {
for j in 0..i {
if sorted[i] < sorted[j] {
let popped_i = sorted.remove(i);
sorted.insert(j, popped_i);
}
}
}
sorted
}
}