diff --git a/src/main.rs b/src/main.rs index 88d7c39..8298f90 100644 --- a/src/main.rs +++ b/src/main.rs @@ -22,8 +22,11 @@ fn main() { // so we can use it in our function let test_vector_string = format!("{:?}", test_vector); println!("Here are the values of the array, unsorted: {}", test_vector_string); + //Now, sort it! + selection_sort(&mut test_vector); - + let test_vector_string = format!("{:?}", test_vector); + println!("Here are the values of the array, sorted (ascending): {}", test_vector_string); } @@ -34,12 +37,11 @@ fn main() { fn randomize_vector (vector : &mut Vec, size : u32) { //First clear the array vector.clear(); - let mut rng = rand::rng(); - // Ranges are built into Rust! // Nice that using underscores for useless stuff will work for _ in 0..size { + // Fill vector with random values let random_number = rng.random_range(MIN_RANDOM..=MAX_RANDOM); vector.push(random_number); @@ -49,9 +51,35 @@ fn randomize_vector (vector : &mut Vec, size : u32) { } #[allow(dead_code)] -fn selection_sort(unsorted_array : &mut [i32]) { +fn selection_sort(vector : &mut [i32]) { + + //Creates the anonymous indexing value + let mut i : usize = 0; + while i < vector.len() { + //Keep track of the greatest value + let mut max_value = vector[i]; + let mut max_index = i; + //Creates the anonymous indexing value + let mut j : usize = i; + while j < vector.len() { + if vector[j] > max_value { + //We make this the new greatest + max_value = vector[j]; + max_index = j; + } + j += 1; + } + + //Swap the values + let temp = vector[i]; + vector[i] = max_value; + vector[max_index] = temp; + + + i += 1; + } }