Tri sélection

Un tri sélection sans indices…

Pour ce petit exo, on cherche à implémenter un tri par sélection.

Facile non ? Oui, sauf que pour compliquer un peu les choses on se propose de n’utiliser aucun indice. Interdiction donc d’utiliser tranche[i].

Vous pouvez télécharger ici un petit bout de code à compléter avec ses tests.

Solution
pub fn tri_selection(mut tranche: &mut [u32]) {
    // la tranche contient à chaque tour ce qui reste à trier
    while !tranche.is_empty() {
        tranche = tranche
            .split_first_mut()
            .map(|(premier, reste)| {
                reste.iter_mut().min().map(|element_min| {
                    if premier > element_min {
                        std::mem::swap(premier, element_min)
                    }
                });
                reste
            })
            .unwrap();
    }
}