How to merge two sorted vectors in Rust

1 Answer

0 votes
fn merge_arrays(arr1: &[i32], arr2: &[i32]) -> Vec<i32> {
    let mut merged = Vec::with_capacity(arr1.len() + arr2.len());
    let mut i = 0;
    let mut j = 0;

    // Merge while both slices have elements
    while i < arr1.len() && j < arr2.len() {
        if arr1[i] < arr2[j] {
            merged.push(arr1[i]);
            i += 1;
        } else {
            merged.push(arr2[j]);
            j += 1;
        }
    }

    // Append remaining elements
    merged.extend_from_slice(&arr1[i..]);
    merged.extend_from_slice(&arr2[j..]);

    merged
}

fn main() {
    let arr1 = vec![1, 3, 5, 7, 8, 9, 9];
    let arr2 = vec![2, 3, 4, 5, 6, 9];

    let result = merge_arrays(&arr1, &arr2);
    println!("{:?}", result);
}



/*
run:

[1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 9, 9]

*/

 



answered Nov 30, 2025 by avibootz
...