Question

In: Computer Science

1. Implement a method that meets the following requirements: (a) Do not reuse any code for...

1. Implement a method that meets the following requirements:

(a) Do not reuse any code for the following:

i. Try to write this method with as few lines of code as you can

ii. Sorts a group of three integers, x,y and z, into decreasing order (they do not have to be in a sequence).

iii. Assume the value in x is less than the value in z. You can also assume there are no duplicates among x, y and z (none of them contain the same value)

iv. Prints a message each time the order of two elements are changed.

v. Prints the list before and after sorting

(b) You can reuse Java API code and module code for the following:

i. Calls mergesort to sort the sequence of numbers into increasing order

ii. Prints the list after the second sorting.

(c) Implement a main method that calls the above methods, demonstrating their use with all applicable printed output

Solutions

Expert Solution


import java.util.*;
public class MergeSort
{
   // Function for 3-way merge sort process
   public static void mergeSort(Integer[] z)
   {
       // if array of size is zero returns null
       if (z== null)
           return;

       // creating duplicate of given array
       Integer[] x = new Integer[z.length];

       // copying alements of given array into
       // duplicate array
       for (int i = 0; i < x.length; i++)
           x[i] = z[i];

       // sort function
       mergeSort(x, 0, z.length, z);

       // copy back elements of duplicate array
       // to given array
       for (int i = 0; i < x.length; i++)
           z[i] = x[i];
   }

   /* Performing the merge sort algorithm on the
   given array of values in the rangeof indices
   [low, high). low is minimum index, high is
   maximum index (exclusive) */
   public static void mergeSort(Integer[] z,
               int low, int high, Integer[] y)
   {
       // If array size is 1 then do nothing
       if (high - low < 2)
           return;

       // Splitting array into 3 parts
       int mid1 = low + ((high - low) / 3);
       int mid2 = low + 2 * ((high - low) / 3) + 1;

       // Sorting 3 arrays recursively
       mergeSort(y, low, mid1, z);
       mergeSort(y, mid1, mid2, z);
       mergeSort(y, mid2, high, z);

       // Merging the sorted arrays
       merge(y, low, mid1, mid2, high, z);
   }

   /* Merge the sorted ranges [low, mid1), [mid1,
   mid2) and [mid2, high) mid1 is first midpoint
   index in overall range to merge mid2 is second
   midpoint index in overall range to merge*/
   public static void merge(Integer[] z, int low,
                       int mid1, int mid2, int high,
                               Integer[] y)
   {
       int i = low, j = mid1, k = mid2, l = low;

       // choose smaller of the smallest in the three ranges
       while ((i < mid1) && (j < mid2) && (k < high))
       {
           if (z[i].compareTo(z[j]) < 0)
           {
               if (z[i].compareTo(z[k]) < 0)
                   y[l++] = z[i++];

               else
                   y[l++] = z[k++];
           }
           else
           {
               if (z[j].compareTo(z[k]) < 0)
                   y[l++] = z[j++];
               else
                   y[l++] = z[k++];
           }
       }

       // case where first and second ranges have
       // remaining values
       while ((i < mid1) && (j < mid2))
       {
           if (z[i].compareTo(z[j]) < 0)
               y[l++] = z[i++];
           else
               y[l++] = z[j++];
       }

       // case where second and third ranges have
       // remaining values
       while ((j < mid2) && (k < high))
       {
           if (z[j].compareTo(z[k]) < 0)
               y[l++] = z[j++];

           else
               y[l++] = z[k++];
       }

       // case where first and third ranges have
       // remaining values
       while ((i < mid1) && (k < high))
       {
           if (z[i].compareTo(z[k]) < 0)
               y[l++] = z[i++];
           else
               y[l++] = z[k++];
       }

       // copy remaining values from the first range
       while (i < mid1)
           y[l++] = z[i++];

       // copy remaining values from the second range
       while (j < mid2)
           y[l++] = z[j++];

       // copy remaining values from the third range
       while (k < high)
           y[l++] = z[k++];
   }

   // Driver function
   public static void main(String args[])
   {
       // test case of values
       Integer[] data = new Integer[] {45, -2, -45, 78,
                           30, -42, 10, 19, 73, 93};
      
      
       System.out.println("data before sorting decreasing order ");
       for(int i=0;i<data.length;i++)
       System.out.print(data[i]+ " ");
       mergeSort(data);

       System.out.println("\nAfter merge sort: \n");
       for (int i = 0; i < data.length; i++)
           System.out.print(data[i] + " ");
   }
}
output

sorting before sorting decreasing order
45 -2 -45 78 30 -42 10 19 73 93
After merge sort:

-45 -42 -2 10 19 30 45 73 78 93


Related Solutions

Implement the following function by replacing the pass keyword with your code. Do not change the...
Implement the following function by replacing the pass keyword with your code. Do not change the spelling of the function name or the parameter list. def order_pie(): Important notes: Ask ONLY these questions, in EXACTLY this order. Do not ask more questions than are necessary to arrive at the right answer. You can expect the input values to be 'yes' or 'no'. For this assignment you do not have to worry about other spellings or capitalization. The return values must...
Write a C program that meets the following requirements. Uses a while loop to display the...
Write a C program that meets the following requirements. Uses a while loop to display the first 10 natural numbers (on one row, with a tab separating each number) Uses a while loop to find the sum of the second set of 10 natural numbers. Reads a user entry and displays all the natural numbers up to the user entry (on a column list with a new line separating each number). Finds and displays the sum of all natural numbers...
Create shell in C which meets requirements below: 1. The shell must support the following internal commands:
Create shell in C which meets the requirements below:1. The shell must support the following internal commands:i.cd - Change the current default directory toIf the argument is not present, report the current directory. If the directory does not exist an appropriate errorshould be reported. This command should also change thePWD environment variable.ii. clr - Clear the screen.iii. dir - List the contents of directory. iv.environ - List all the environment strings.v. echo - Display on the display followed by a newline...
THIS IS FOR ARDUINO PROGRAMMING Write code that checks the sensor data and meets the following...
THIS IS FOR ARDUINO PROGRAMMING Write code that checks the sensor data and meets the following conditions: For night conditions, turn on white LED 1 For day conditions, turn off white LED 1 Code should check intervals every 5 seconds. NEED THE BELOW CODE TO FIT THE ABOVE REQUIREMENTS. const int lightSensor = 5; //light sensor variable float sensValue = 0; //variable to hold sensor readings const int button = 3; //pin for button reads const int LED1 = 5;...
Using Python, write a program named hw3b.py that meets the following requirements: Welcome the user to...
Using Python, write a program named hw3b.py that meets the following requirements: Welcome the user to Zion's Pizza Restaurant and ask the user how many people are in their dinner group. If the answer is more than eight (8), print a message saying they'll have to wait for a table. Otherwise, report that their table is ready and take their order. Assume the client orders one pizza, and ask what he/she would like on their pizza, include a loop that...
Using Python, write a program that meets the following requirements: Make a list called sandwich_orders and...
Using Python, write a program that meets the following requirements: Make a list called sandwich_orders and fill it with the names of various sandwiches. Make an empty list called finished_sandwiches. Loop through the list of sandwich orders and spring a message for each order such as "I am working on your tuna sandwich" As each sandwich is made, move it to the list of finished sandwiches. After all the sandwiches have been made, print a message listing each sandwich that...
Implement the steffenson method in matlab. The code must be in MATLAB DOnt answer if you...
Implement the steffenson method in matlab. The code must be in MATLAB DOnt answer if you cannot give correct MATLAB
// the language is java, please implement the JOptionPane Use method overloading to code an operation...
// the language is java, please implement the JOptionPane Use method overloading to code an operation class called CircularComputing in which there are 3 overloaded methods and an output method as follows: • computeObject(double radius) – compute the area of a circle • computeObject(double radius, double height) – compute area of a cylinder • computeObject(double radiusOutside, double radiusInside, double height) – compute the volume of a cylindrical object • output() use of JOptionPane to display instance field(s) and the result...
Using Python, write a program named hw3a.py that meets the following requirements: Create a dictionary called...
Using Python, write a program named hw3a.py that meets the following requirements: Create a dictionary called glossary. Have the glossary include a list of five (5) programing words you have learned in chapters 4-6. Use these words as keys to your dictionary. Find the definition of these words and use them as the values to the keys. Using a loop, print each word and its meaning as neatly formatted output. Create three dictionaries called person. Have each of the person...
I need to implement a method that removes any duplicate items in a list and returns...
I need to implement a method that removes any duplicate items in a list and returns the new values    private static linkedlist removeDuplicates(linkedlist list) {    return list; }
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT