pub fn cocktail_shaker_sort(list: &[i32]) -> Result<Vec<i32>,String> {
if list.is_empty() {
return Err("Cannot use cocktail shaker sort on an empty list!".to_string());
}
let mut result = list.to_vec();
let n = result.len();
let mut swapped = true;
while swapped {
swapped = false;
for i in 1..n {
if result[i-1] > result[i] {
result.swap(i-1,i);
swapped = true;
}
}
if !swapped {
return Ok(result);
}
swapped = false;
for i in (1..n).rev() {
if result[i-1] > result[i] {
result.swap(i-1,i);
swapped = true
}
}
}
Ok(result)
}