davhojt
9b971063ca
|
3 years ago | |
---|---|---|
.. | ||
Insertion-Sort-demo.png | ||
README.md |
README.md
insertion_sort
Instructions
Implement the insertion-sort algorithm by creating a function named insertion_sort
. It should execute the iterations of the algorithm up to the number indicated by steps
. See the Usage for more information.
The insertion-sort algorithm sorts an array of size n
in ascending order.
-
Iterates over the slice from
slice[1]
toslice[n]
. -
Compares the current element (
slice[key]
) to its predecessor (slice[key-1]
). -
If
slice[key]
is smaller thanslice[key-1]
, thenslice[key]
is compared toslice[key-2]
and so on. -
All of the elements with values greater than
slice[key]
will need to be shifted over, to fit the value atslice[key]
into its new position.
A step-by-step example of insertion-sort:
Figure 1 - Step by step execution of the algorithm insertion sort
Expected Function
pub fn insertion_sort(slice: &mut [i32], steps: usize) {
}
Usage
Here is a possible program to test your function,
fn main() {
let mut target = [5, 3, 7, 2, 1, 6, 8, 4];
// executes the first iteration of the algorithm
insertion_sort(&mut target, 1);
println!("{:?}", target);
let mut target = [5, 3, 7, 2, 1, 6, 8, 4];
let len = target.len();
// executes len - 1 iterations of the algorithm
// i.e. sorts the slice
insertion_sort(&mut target, len - 1);
println!("{:?}", target);
}
And its output:
$ cargo run
[3, 5, 7, 2, 1, 6, 8, 4]
[1, 2, 3, 4, 5, 6, 7, 8]
$