mod merge_sort; mod quick_sort; use crate::quick_sort::quick_sort; use crate::merge_sort::merge_sort_inversions; use std::fs::File; use std::io; use std::io::{BufRead, BufReader, Error, ErrorKind}; use std::vec::Vec; fn read_to_vector(path: &str) -> Result, io::Error> { let file = File::open(path)?; let br = BufReader::new(file); let mut v = Vec::new(); for line in br.lines() { let line = line?; let n = line .trim() .parse() .map_err(|e| Error::new(ErrorKind::InvalidData, e))?; v.push(n); } Ok(v) } #[allow(dead_code)] fn c1a2() { let vec = read_to_vector("data/course_1_assignment_2.txt").unwrap(); let (_sorted, inversions) = merge_sort_inversions(vec); println!("course 1 assignment 2: {:?}", inversions); } #[allow(dead_code)] fn c1a3() { let mut vec = read_to_vector("data/course_1_assignment_3.txt").unwrap(); let mut comp_acc: usize = 0; quick_sort(&mut vec, &mut comp_acc); println!("course 1 assignment 3: {:?}", comp_acc); /* 1: 162085 2: 164123 3: 138382 */ } fn main() { c1a2(); c1a3(); }