1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
//! [Gnome sort](https://en.wikipedia.org/wiki/Gnome_sort) use super::{Algorithm, Array}; /// [Gnome sort](https://en.wikipedia.org/wiki/Gnome_sort) pub struct GnomeSort; impl Algorithm for GnomeSort { fn sort(&self, array: Array) { let len = array.len(); let mut i = 0; while i < len { array.set_color(i, [0.0, 1.0, 0.0, 0.8]); array.wait(5); array.reset_color(i); if i == 0 || array.get(i) >= array.get(i - 1) { i += 1; } else { array.swap(i, i - 1); i -= 1; } } } fn name(&self) -> String { "Gnome sort".to_string() } }