Merge Sort Implementation

Stable divide-and-conquer sorting algorithm with O(n log n) complexity

By Cojocaru David1d ago (Sep 13, 2025)
tutorial
rust
algorithms

Merge Sort Implementation

rust
fn merge_sort<T: Clone + Ord>(arr: &mut [T]) {
    let len = arr.len();
    if len <= 1 {
        return;
    }
    
    let mid = len / 2;
    let mut left = arr[0..mid].to_vec();
    let mut right = arr[mid..].to_vec();
    
    merge_sort(&mut left);
    merge_sort(&mut right);
    
    merge(&left, &right, arr);
}

fn merge<T: Clone + Ord>(left: &[T], right: &[T], result: &mut [T]) {
    let mut i = 0;
    let mut j = 0;
    let mut k = 0;
    
    while i < left.len() && j < right.len() {
        if left[i] <= right[j] {
            result[k] = left[i].clone();
            i += 1;
        } else {
            result[k] = right[j].clone();
            j += 1;
        }
        k += 1;
    }
    
    while i < left.len() {
        result[k] = left[i].clone();
        i += 1;
        k += 1;
    }
    
    while j < right.len() {
        result[k] = right[j].clone();
        j += 1;
        k += 1;
    }
}

fn main() {
    let mut numbers = vec![64, 34, 25, 12, 22, 11, 90, 5];
    
    println!("Original array: {:?}", numbers);
    merge_sort(&mut numbers);
    println!("Sorted array: {:?}", numbers);
}

Views

26

Lines

52

Characters

1,122

Likes

0

Details

Language
Rust
Created
Sep 13, 2025
Updated
1d ago
Size
1.1 KB

Build your snippet library

Join thousands of developers organizing and sharing code snippets.

Merge Sort Implementation - Snippets Library