From 6659387d4028a6aa3aba8d1ca44413acb0cfef5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Christian=20Gr=C3=BCnhage?= Date: Sun, 27 Aug 2017 17:26:29 +0200 Subject: [PATCH] feat: add insertionsort --- src/algorithms/insertionsort.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/algorithms/insertionsort.rs diff --git a/src/algorithms/insertionsort.rs b/src/algorithms/insertionsort.rs new file mode 100644 index 0000000..e3d3960 --- /dev/null +++ b/src/algorithms/insertionsort.rs @@ -0,0 +1,25 @@ +use algorithms::Algorithm; + +pub struct Insertionsort; + +impl Algorithm for Insertionsort { + fn sort(mut vector: Vec) -> Result, &'static str> { + for i in 0..vector.len() { + let mut smallest_index = i; + for j in i..vector.len() { + if vector[j] < vector[smallest_index] { + smallest_index = j; + } + } + if i != smallest_index { + let smallest_value = vector[smallest_index]; + for j in (i..(smallest_index)).rev() { + vector[j + 1] = vector[j]; + } + vector[i] = smallest_value; + } + println!("{:?}", vector); + } + return Ok(vector); + } +}