fn main() {
// Input vector of strings
let mut numbers = vec![
"12.3", "5.6", "789.1", "3.14", "456.0", "0", "0.01", "4.0",
];
// Sort the vector using the custom comparator
numbers.sort_by(|a, b| compare_as_decimal(a, b));
println!("Sorted vector of decimal strings:");
for num in &numbers {
print!("{} ", num);
}
}
// Comparator function to sort strings as decimal numbers
fn compare_as_decimal(a: &str, b: &str) -> std::cmp::Ordering {
// Convert strings to float for comparison
let num_a = a.parse::<f64>().unwrap_or(f64::NAN);
let num_b = b.parse::<f64>().unwrap_or(f64::NAN);
num_a.partial_cmp(&num_b).unwrap_or(std::cmp::Ordering::Equal)
}
/*
run:
Sorted vector of decimal strings:
0 0.01 3.14 4.0 5.6 12.3 456.0 789.1
*/