mirror of https://github.com/01-edu/public.git
Augusto
4 years ago
3 changed files with 64 additions and 4 deletions
After Width: | Height: | Size: 66 KiB |
@ -0,0 +1,58 @@
|
||||
## insertion_sort |
||||
|
||||
### Instructions |
||||
|
||||
The insertion sort algorithm: |
||||
|
||||
- To sort an array of size n in ascending order: |
||||
|
||||
1. Iterate from slice[1] to slice[n] over the slice. |
||||
|
||||
2. Compare the current element (key) to its predecessor. |
||||
|
||||
3. If the key element is smaller than its predecessor, compare it to the elements before. Move the greater elements one position up to make space for the swapped element. |
||||
|
||||
Here is a visual example of sorting a slice step by step using the insertion sort algorithm. |
||||
|
||||
![](Insertion-Sort-demo.jpg) |
||||
**Figure 1** - Step by step execution of the algorithm insertion sort |
||||
|
||||
- Implement the algorithm insertion sort by creating a function `insertion_sort(slice, steps)` that executes the iterations of the algorithm the number of steps indicated by the parameter `steps`. See the [Usage](#usage) for more information. |
||||
|
||||
### Notion |
||||
|
||||
### Expected Function |
||||
|
||||
```rust |
||||
pub fn insertion_sort(slice: &mut [i32], steps: usize) { |
||||
} |
||||
``` |
||||
|
||||
### Usage |
||||
|
||||
Here is a possible program to test your function |
||||
|
||||
```rust |
||||
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 it's output: |
||||
|
||||
```console |
||||
student@ubuntu:~/[[ROOT]]/test$ cargo run |
||||
[3, 5, 7, 2, 1, 6, 8, 4] |
||||
[1, 2, 3, 4, 5, 6, 7, 8] |
||||
student@ubuntu:~/[[ROOT]]/test$ |
||||
``` |
Loading…
Reference in new issue