Database System Concepts
Database System Concepts
7th Edition
ISBN: 9780078022159
Author: Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher: McGraw-Hill Education
Bartleby Related Questions Icon

Related questions

bartleby

Concept explainers

Question

I need help with this Java problem to output as it's explained in this image below:

import java.util.Scanner;

public class LabProgram {
   // Read size and create an array of size ints.
   // Read size ints, storing them in the array.
   // Return the array.
   public static int[] readNums() {
      Scanner scnr = new Scanner(System.in);
      int size = scnr.nextInt();                  // Read array size
      int[] nums = new int[size];                 // Create array
      for (int j = 0; j < size; ++j) {            // Read the numsbers
         nums[j] = scnr.nextInt();
      }
      return nums;                                // Return the array
   }

   // Output the numbers in nums, separated by spaces.
   // No space or newline will be output before the first number or after the last.
   public static void printNums(int[] nums) {
      for (int i = 0; i < nums.length; i++) {
         System.out.print(nums[i]);
         if (i < nums.length) {
            System.out.print(" ");
         }
      }
   }

   public static void merge(int[] numbers, int i, int j, int k) {
      int mergedSize = k - i + 1;
      int mergedNumbers[] = new int[mergedSize];
      int mergePos;
      int leftPos;
      int rightPos;

      mergePos = 0;
      leftPos = i;
      rightPos = j + 1;

      while (leftPos <= j && rightPos <= k) {
         if (numbers[leftPos] < numbers[rightPos]) {
            mergedNumbers[mergePos] = numbers[leftPos];
            ++leftPos;
         }
         else {
            mergedNumbers[mergePos] = numbers[rightPos];
            ++rightPos;
         }
         ++mergePos;
      }

      while (leftPos <= j) {
         mergedNumbers[mergePos] = numbers[leftPos];
         ++leftPos;
         ++mergePos;
      }

      while (rightPos <= k) {
         mergedNumbers[mergePos] = numbers[rightPos];
         ++rightPos;
         ++mergePos;
      }

      for (mergePos = 0; mergePos < mergedSize; ++mergePos) {
         numbers[i + mergePos] = mergedNumbers[mergePos];
      }
   }

   public static void mergeSort(int numbers[], int i, int k) {
      int j;

      if (i < k) {
         j = (i + k) / 2;
         /* Trace output added to code in book */
         System.out.printf("%d %d | %d %d\n", i, j, j+1, k);

         mergeSort(numbers, i, j);
         mergeSort(numbers, j + 1, k);

         merge(numbers, i, j, k);
      }
   }

   public static void  main(String[] args) {
      int[] numbers = readNums();

      System.out.print("unsorted: ");
      printNums(numbers);
      System.out.println("\n");

      mergeSort(numbers, 0, numbers.length - 1);

      System.out.print("\nsorted:   ");
      printNums(numbers);
   }
}

The class is the same as shown at the end of the Merge sort section, with the following changes:
• Numbers are entered by a user in a separate helper method, readNums(), instead of defining a specific array in main(). The first
number is how many integers to be sorted, and the rest are the integers.
Output of the array has been moved to the method printNums().
• An output has been added to mergeSort(), showing the indices that will be passed to the recursive method calls.
Add code to the merge sort algorithm to count the number of comparisons performed.
Add code at the end of main() that outputs "comparisons: " followed by the number of comparisons performed (Ex: "comparisons: 12")
Hint: Use a static variable to count the comparisons.
Note: Take special care to look at the output of each test to better understand the merge sort algorithm.
Ex: When the input is:
6 3 2 1 598
the output is:
unsorted: 3 2 1 5 98
0 2
3 5
01 | 22
0 0
1 1
3 4
5 5
3 3
4 4
sorted: 1 2 3 5 8 9
comparisons: 8
expand button
Transcribed Image Text:The class is the same as shown at the end of the Merge sort section, with the following changes: • Numbers are entered by a user in a separate helper method, readNums(), instead of defining a specific array in main(). The first number is how many integers to be sorted, and the rest are the integers. Output of the array has been moved to the method printNums(). • An output has been added to mergeSort(), showing the indices that will be passed to the recursive method calls. Add code to the merge sort algorithm to count the number of comparisons performed. Add code at the end of main() that outputs "comparisons: " followed by the number of comparisons performed (Ex: "comparisons: 12") Hint: Use a static variable to count the comparisons. Note: Take special care to look at the output of each test to better understand the merge sort algorithm. Ex: When the input is: 6 3 2 1 598 the output is: unsorted: 3 2 1 5 98 0 2 3 5 01 | 22 0 0 1 1 3 4 5 5 3 3 4 4 sorted: 1 2 3 5 8 9 comparisons: 8
Expert Solution
Check Mark
Knowledge Booster
Background pattern image
Computer Science
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Text book image
Database System Concepts
Computer Science
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:McGraw-Hill Education
Text book image
Starting Out with Python (4th Edition)
Computer Science
ISBN:9780134444321
Author:Tony Gaddis
Publisher:PEARSON
Text book image
Digital Fundamentals (11th Edition)
Computer Science
ISBN:9780132737968
Author:Thomas L. Floyd
Publisher:PEARSON
Text book image
C How to Program (8th Edition)
Computer Science
ISBN:9780133976892
Author:Paul J. Deitel, Harvey Deitel
Publisher:PEARSON
Text book image
Database Systems: Design, Implementation, & Manag...
Computer Science
ISBN:9781337627900
Author:Carlos Coronel, Steven Morris
Publisher:Cengage Learning
Text book image
Programmable Logic Controllers
Computer Science
ISBN:9780073373843
Author:Frank D. Petruzella
Publisher:McGraw-Hill Education