算法 / 排序

use chrono::Duration;

// Time Complexity O(n^2)
// Space Complexity O(1)

fn sort(items: &mut [i32])
{
    for i in 0..items.len() {
        for j in i + 1..items.len() {
            if items[j] < items[i] {
                let tmp = items[j];
                items[j] = items[i];
                items[i] = tmp;
            }
        }
    }
}

let mut nums = [ 41532  ];

sort(&mut nums);
// sortItems is {1, 2, 3, 4, 5}
println!("nums is {:?}", nums);

// *** simplified speed test ***

let mut items = [0i32200];
for i in 0..items.len() {
    items[i] = i as i32;
}
let tmp = items[5];
items[5] = items[6];
items[6] = tmp;
let count = 1000;

let start = chrono::offset::Utc::now();

for _ in 1..count {
    sort(&mut items);
}

let now = chrono::offset::Utc::now();
let delta: Duration = now - start;

println!("milliseconds is {}"
    delta.num_milliseconds());    
println!("items is {:?}", items);
// about 539 milliseconds