diff --git a/main.rs b/main.rs new file mode 100644 index 0000000..0bef4c8 --- /dev/null +++ b/main.rs @@ -0,0 +1,27 @@ +fn get_reversals_to_sort(arr: &[i32]) -> Vec { + let mut intermediate: Vec = arr.into(); + let mut ret: Vec = Vec::new(); + + for i in (2..=intermediate.len()).rev() { + let max = intermediate[0..i].iter().max().unwrap(); + let found = intermediate[0..i].iter().position(|e| e == max).unwrap(); + + let first_swap = found + 1; + let second_swap = i; + + if first_swap != second_swap { + if first_swap > 1 { + ret.push(first_swap); + intermediate[0..first_swap].reverse(); + } + ret.push(second_swap); + intermediate[0..second_swap].reverse(); + } + } + ret +} +pub fn main() { + let vals = [12, 13, 11, 14]; + let show = get_reversals_to_sort(&vals); + println!("{:?}", show); +}