Wrote program for Day 7
This commit is contained in:
parent
2027871010
commit
1fb8530cbc
@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "merge_sorted_array"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
@ -0,0 +1,21 @@
|
|||||||
|
pub fn merge(arr1: &mut [usize], arr2: &[usize]) {
|
||||||
|
let arr2_len = arr2.len();
|
||||||
|
let arr1_len = arr1.len() - arr2_len;
|
||||||
|
|
||||||
|
let mut arr2_iterator = 0;
|
||||||
|
let mut arr1_iterator = 0;
|
||||||
|
let temp_arr1 = arr1.to_vec();
|
||||||
|
|
||||||
|
for _ in 0..arr1_len + arr2_len {
|
||||||
|
if arr1_iterator == arr1_len {
|
||||||
|
arr1[arr1_iterator + arr2_iterator] = arr2[arr2_iterator];
|
||||||
|
arr2_iterator += 1;
|
||||||
|
} else if arr2_iterator == arr2_len || temp_arr1[arr1_iterator] <= arr2[arr2_iterator] {
|
||||||
|
arr1[arr1_iterator + arr2_iterator] = temp_arr1[arr1_iterator];
|
||||||
|
arr1_iterator += 1;
|
||||||
|
} else if arr2[arr2_iterator] < temp_arr1[arr1_iterator] {
|
||||||
|
arr1[arr1_iterator + arr2_iterator] = arr2[arr2_iterator];
|
||||||
|
arr2_iterator += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
use std::io::{self, Write};
|
||||||
|
|
||||||
|
use merge_sorted_array::merge;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut buffer = String::new();
|
||||||
|
|
||||||
|
print!("Insert the first set of numbers separated by a space: ");
|
||||||
|
io::stdout().flush().expect("Failed to flush stdout.");
|
||||||
|
|
||||||
|
io::stdin()
|
||||||
|
.read_line(&mut buffer)
|
||||||
|
.expect("Failed to read from stdin.");
|
||||||
|
|
||||||
|
let mut nums1: Vec<usize> = buffer
|
||||||
|
.split(' ')
|
||||||
|
.map(|x| x.trim())
|
||||||
|
.filter(|x| !x.is_empty())
|
||||||
|
.map(|x| x.parse().expect("A non-integer has been inserted."))
|
||||||
|
.collect();
|
||||||
|
nums1.sort();
|
||||||
|
|
||||||
|
print!("Insert the second set of numbers separated by a space: ");
|
||||||
|
io::stdout().flush().expect("Failed to flush stdout.");
|
||||||
|
|
||||||
|
buffer = String::new();
|
||||||
|
|
||||||
|
io::stdin()
|
||||||
|
.read_line(&mut buffer)
|
||||||
|
.expect("Failed to read from stdin.");
|
||||||
|
|
||||||
|
let mut nums2: Vec<usize> = buffer
|
||||||
|
.split(' ')
|
||||||
|
.map(|x| x.trim())
|
||||||
|
.filter(|x| !x.is_empty())
|
||||||
|
.map(|x| x.parse().expect("A non-integer has been inserted."))
|
||||||
|
.collect();
|
||||||
|
nums2.sort();
|
||||||
|
|
||||||
|
nums1.resize(nums1.len() + nums2.len(), 0);
|
||||||
|
|
||||||
|
merge(&mut nums1, &nums2);
|
||||||
|
|
||||||
|
let merged: String = nums1.into_iter().map(|x| x.to_string() + " ").collect();
|
||||||
|
println!("Your ordered and merged sets: {}", merged);
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
use merge_sorted_array::merge;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn example() {
|
||||||
|
let mut nums1 = [1, 2, 3, 0, 0, 0];
|
||||||
|
let nums2 = [2, 5, 6];
|
||||||
|
merge(&mut nums1, &nums2);
|
||||||
|
assert_eq!(nums1, [1, 2, 2, 3, 5, 6]);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user