5. Merge ordenado 

Run Settings
LanguageRust
Language Version
Run Command
fn merge<T: Copy + PartialOrd>(x1: &[T], x2: &[T], y: &mut [T]) { assert_eq!(x1.len() + x2.len(), y.len()); let mut a = 0; let mut b = 0; let mut c = 0; while a < x1.len() && b < x2.len() { if x1[a] < x2[b] { y[c] = x1[a]; c += 1; a += 1; } else { y[c] = x2[b]; c += 1; b += 1; } } if a < x1.len() { y[c..].copy_from_slice(&x1[a..]); } if b < x2.len() { y[c..].copy_from_slice(&x2[b..]); } } fn merge_ordenado<T: Copy + Ord>(x: &mut [T]) { let n = x.len(); let m = n / 2; if n <= 1 { return; } merge_ordenado(&mut x[0..m]); merge_ordenado(&mut x[m..n]); let mut y: Vec<T> = x.to_vec(); merge(&x[0..m], &x[m..n], &mut y[..]); x.copy_from_slice(&y); } fn main() { let mut arr = [6, 4, 2, 1, 5, 3]; println!("{:?}", arr); merge_ordenado(&mut arr); println!("{:?}\n", arr); }
Editor Settings
Theme
Key bindings
Full width
Lines