Since both arrays are already sorted, that means that the first int of one of the arrays will be smaller than all the ints that come after it in the same array. We also know that if the first int of arr1 is smaller than the first int of arr2, then by the same logic, the first int of arr1 is smaller than all the ints in arr2 since arr2 is also sorted.
public static int[] merge(int[] arr1, int[] arr2) {
int i = 0; //current index of arr1
int j = 0; //current index of arr2
int[] result = new int[arr1.length+arr2.length]
while(i < arr1.length && j < arr2.length) {
result[i+j] = Math.min(arr1[i], arr2[j]);
if(arr1[i] < arr2[j]) {
i++;
} else {
j++;
}
}
boolean isArr1 = i+1 < arr1.length;
for(int index = isArr1 ? i : j; index < isArr1 ? arr1.length : arr2.length; index++) {
result[i+j+index] = isArr1 ? arr1[index] : arr2[index]
}
return result;
}
So this implementation is kind of confusing, but it's the first way I thought to do it so I ran with it. There is probably an easier way, but that's the beauty of programming.
A quick explanation:
We first loop through the arrays comparing the first elements of each array, adding whichever is the smallest to the result array. Each time we do so, we increment the index value (i or j) for the array that had the smaller number. Now the next time we are comparing the NEXT element in that array to the PREVIOUS element of the other array. We do this until we reach the end of either arr1 or arr2 so that we don't get an out of bounds exception.
The second step in our method is to tack on the remaining integers to the resulting array. We need to do this because when we reach the end of one array, there will still be at least one more integer in the other array. The boolean isArr1 is telling us whether arr1 is the array with leftovers. If so, we loop through the remaining indices of arr1 and add them to the result. Otherwise, we do the same for arr2. All of this is done using ternary operations to determine which array to use, but if we wanted to we could split the code into two for loops using an if statement.
Answer:
// code in C++
#include <bits/stdc++.h>
using namespace std;
// main function
int main()
{
// variables
int sum_even=0,sum_odd=0,eve_count=0,odd_count=0;
int largest=INT_MIN;
int smallest=INT_MAX;
int n;
cout<<"Enter 10 Integers:";
// read 10 Integers
for(int a=0;a<10;a++)
{
cin>>n;
// find largest
if(n>largest)
largest=n;
// find smallest
if(n<smallest)
smallest=n;
// if input is even
if(n%2==0)
{
// sum of even
sum_even+=n;
// even count
eve_count++;
}
else
{
// sum of odd
sum_odd+=n;
// odd count
odd_count++;
}
}
// print sum of even
cout<<"Sum of all even numbers is: "<<sum_even<<endl;
// print sum of odd
cout<<"Sum of all odd numbers is: "<<sum_odd<<endl;
// print largest
cout<<"largest Integer is: "<<largest<<endl;
// print smallest
cout<<"smallest Integer is: "<<smallest<<endl;
// print even count
cout<<"count of even number is: "<<eve_count<<endl;
// print odd cout
cout<<"count of odd number is: "<<odd_count<<endl;
return 0;
}
Explanation:
Read an integer from user.If the input is greater that largest then update the largest.If the input is smaller than smallest then update the smallest.Then check if input is even then add it to sum_even and increment the eve_count.If the input is odd then add it to sum_odd and increment the odd_count.Repeat this for 10 inputs. Then print sum of all even inputs, sum of all odd inputs, largest among all, smallest among all, count of even inputs and count of odd inputs.
Output:
Enter 10 Integers:1 3 4 2 10 11 12 44 5 20
Sum of all even numbers is: 92
Sum of all odd numbers is: 20
largest Integer is: 44
smallest Integer is: 1
count of even number is: 6
count of odd number is: 4
A) Social Collaboration
Social Collaboration is a way for people to combine their information and make it easier to go through and to work well as a team.