rust version
This commit is contained in:
parent
33e60cd710
commit
03e6f1ebf7
1 changed files with 27 additions and 0 deletions
27
main.rs
Normal file
27
main.rs
Normal file
|
@ -0,0 +1,27 @@
|
|||
fn get_reversals_to_sort(arr: &[i32]) -> Vec<usize> {
|
||||
let mut intermediate: Vec<i32> = arr.into();
|
||||
let mut ret: Vec<usize> = 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);
|
||||
}
|
Loading…
Reference in a new issue