Skip to content

Instantly share code, notes, and snippets.

@Shadey
Created April 17, 2015 15:55
Show Gist options
  • Save Shadey/efcaaa960e21946bb964 to your computer and use it in GitHub Desktop.
Save Shadey/efcaaa960e21946bb964 to your computer and use it in GitHub Desktop.
extern crate rand;
extern crate time;
use rand::Rng;
use time::PreciseTime;
trait Swappable{
fn swap(&mut self,a:usize,b:usize);
}
impl Swappable for Vec<i32>{
fn swap(&mut self,a:usize,b:usize){
let temp = self[a];
self[a] = self[b];
self[b] = temp;
}
}
fn sort(nums:&mut Vec<i32>){
loop{
let mut swapped = false;
for i in 0..(nums.len() -1){
if nums[i] > nums[i+1]{
swapped = true;
nums.swap(i,i+1);
}
}
if !swapped{
break;
}
}
for x in nums.iter(){
println!("{}",x);
}
}
fn main(){
let mut v = vec![];
let mut rng = rand::thread_rng();
for _ in 0..1000{
v.push(rng.gen::<i32>());
}
let start = PreciseTime::now();
sort(&mut v);
let end = PreciseTime::now();
println!("{} seconds",start.to(end));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment