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