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();
}
}